所以,如果我有两个具有相同键和值的数组:
var firstArr = [{name:'Lorem', post_id:2},{name:'Ipsum', post_id:1}];
var secondArr = [{sec:'Deca', another_id:2},{sec:'Meca', another_id:1},{sec:'Raca', another_id:2}];
我想要实现的目标是:
firstArr.map(function(item,i) {
if(item.post_id === secondArr[i].another_id) {
item.randKey = secondArr[i]
}
});
但这输出是错误的 结果是
firstArr[0];
Object {name: "Lorem", post_id: 2, randKey: Array(1)}
我想要实现的是
firstArr[0];
Object {name: "Lorem", post_id: 2, randKey: Array(2) = {sec:'Deca', another_id:2},{sec:'Raca', another_id:2} }
所以我的问题是它只附加一个数组,但它应该追加两个if(post_id = 2 === another_id = 2)
我希望我足够清楚。
答案 0 :(得分:1)
尝试使用Array#forEach
进行迭代,firstArray
和Array#filter
用于过滤secondArr
并尊重postid
匹配
var firstArr = [{name:'Lorem', post_id:2},{name:'Ipsum', post_id:1}];
var secondArr = [{sec:'Deca', another_id:2},{sec:'Meca', another_id:1},{sec:'Raca', another_id:2}];
firstArr.forEach(function(item,i) {
item.randKey = secondArr.filter(a=> a.another_id == item.post_id)
});
console.log(firstArr)
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
您可以使用临时对象收集具有相同secondArr
的{{1}}的所有项目。然后迭代another_id
并分配收集的项目。
firstArr

var firstArr = [{ name: 'Lorem', post_id: 2 }, { name: 'Ipsum', post_id: 1 }],
secondArr = [{ sec: 'Deca', another_id: 2 }, { sec: 'Meca', another_id: 1 }, { sec: 'Raca', another_id: 2 }],
temp = {};
secondArr.forEach(function (a) {
temp[a.another_id] = temp[a.another_id] || [];
temp[a.another_id].push(a);
});
firstArr.forEach(function (a) {
a.randKey = temp[a.post_id];
});
console.log(firstArr);