快一,我有2个数组/对象。一个包含所有项目,另一个包含来自第一个阵列的所选ID。
我的问题是,循环遍历两个数组的最佳方法是从第二个数组中找到所选项,如果它们是真的,则将数据附加到第一个数组。如果ID匹配,我尝试做的就是追加第一个数组。
例如:
this.categories.filter(
category => {
this.user.category_ids.filter(
selected => {
if(selected == category._id) {
var data = {'selected': true};
category.push(data);
}
}
);
console.log(category);
}
);
目前我正在循环使用类别对象,然后通过user.category_ids进行循环,如果ID匹配我想要追加选中:如果有意义,则返回第一个数组对象。我收到错误:
core.es5.js:1084 ERROR TypeError: category.push is not a function
我不明白为什么。我也试过拼接。
对我而言,这似乎不是最好的方法,因为我在第一个阵列中有12个项目。如果所有12个都被选中,则第二个阵列将有12个项目。因此,通过12 * 12循环到我的内容并不昂贵。
答案 0 :(得分:0)
if (selected == category._id) {
category['selected'] = true;
/* you can build a interface for category
* or declare category as any
* then you can write it as the below
*/
// category.selected = true;
}
push
是为数组添加新项目。
答案 1 :(得分:0)
您可以尝试这样的事情:
this.categories.map(category => {
category.selected = this.user.category_ids.indexOf(category._id) !== -1;
return category;
});
答案 2 :(得分:0)
请澄清categories
是否是一个对象数组?如果是,那么你不能使用push来添加一个新对象,因为categories
中的每个元素都是一个对象,而对象没有push方法。使用
category.selected=true
或
category['selected']=true;
答案 3 :(得分:0)
假设:
解决方案: - 你得到这个错误category.push不是一个函数,因为category是一个对象而不是一个数组,push只适用于数组。
if(selected == category._id) {
category['selected']=true;
}