У меня есть массив объектов нить, как этотJavascript найти объект в объект-массив, хотя конкретный объект недвижимости
threadlist:Thread[]= [thread{id:1},thread{id:2},thread{id:3},...]
У меня также есть массив ThreadRelation внутри объекта пользователя, как показано ниже, чтобы сохранить, если пользователь имеет определенный нить добавлена в закладки или нет. Обратите внимание, что идентификатор в Thread не совпадает с его местом в массиве.
user{
user_id:number,...(some other user typical properties)
threadRelations:ThreadRelation[]=[
threadRelation{
id:2,//relates to id property of a Thread object
isBookmarked:true
},
threadRelation{
id:18,
isBookmarked:true
},..
]}
Я хочу создать функцию, которая возвращает массив только с закладками нитей пользователя. Я могу достичь этого, используя два for-loops и if-statements, но я не думаю, что он эффективен. Есть ли методы, когда я могу найти этот конкретный объект внутри массива напрямую?
updateBookmarkedList(){
for (var i = 0; i < this.activeUser.threadsRelation.length; i++){
if (this.activeUser.threadsRelation[i].bookmarked == true){
var searchId = this.activeUser.threadsRelation[i].id;
for (var j = 0; j < this.threadlist.length; j++){
if (this.threadlist[j].id == searchId){
this.userBookmarkedList.push(this.threadlist[j])
}
}
}
}
}
Спасибо!
Используйте ['Array.prototype.filter'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)! Обратите внимание, что ваш JSON недействителен, если это не псевдокод. В этом случае вы должны предоставить полный пример того, что у вас есть (с достоверными данными). –
@ Mr.Polywhirl Рассмотрите возможность принятия этого ответа. – Alex