Javascript 循环遍历2个数组,并将一个数组中的值赋给第二个数组的每个匹配对象
我有2个数组1.选项和2.sameAccountArrayJavascript 循环遍历2个数组,并将一个数组中的值赋给第二个数组的每个匹配对象,javascript,arrays,angular,lodash,Javascript,Arrays,Angular,Lodash,我有2个数组1.选项和2.sameAccountArray options.map((opt, optInd) => { sameAccountArray.map((acObj, acInd) => { if (opt.optNumber === acObj.optNumber) { console.log(opt.optNumber, acObj.optNumber, acObj.ex
options.map((opt, optInd) => {
sameAccountArray.map((acObj, acInd) => {
if (opt.optNumber === acObj.optNumber) {
console.log(opt.optNumber, acObj.optNumber, acObj.exist, acObj.exist, 'WTF', sameAccountArray);
opt.exist = acObj.exist;
} else {
console.log(opt, acObj, opt.optNumber, acObj.optNumber, 'kundi');
// opt.exist = false;
}
// else {
// if (optInd === acInd) {
// opt.exist = acObj.exist;
// } else {
// console.log('elseeee', optInd, acInd,opt.optNumber, acObj.optNumber, opt.exist, acObj.exist);
// }
// }
});
});
sameAccountArray的数据结构:
{
'key': key,
'shares': this.no_of_shares[key],
'refValue': this.your_reference[key],
'exist': false,
'accountNumber': extractedAccountNumber, 'optNumber': parseInt(extractedOptionNumber)
}
选项中有很大的字段,但我们不需要关心它。选项和sameAccountArray具有名为optNumber的公共字段。我尝试遍历每个数组,如果optNumber相同,则在options数组的每个对象中指定一个名为exist的值。sameAccountArray已经有了正确的exist值,我只需要分配该值以匹配options数组的对象。不知怎么的,它没有被正确分配。请注意,选项数组和sameAccount数组的长度不同。sameAccountArray具有动态对象,而选项具有固定数量的元素。知道这里出了什么问题吗,伙计们?提前谢谢
map方法创建一个新的数组,其结果是对调用数组中的每个元素调用提供的函数
不能使用map函数修改数组,只能使用所需的结果创建一个新数组 试试这个:
options.forEach(opt=>{
sameAccountArray.forEach(acObj=>{
if (opt.optNumber === acObj.optNumber) opt.exist = acObj.exist;
})
})
首先,您必须从map函数返回一些东西才能正常工作
let sameAccountObject={};
sameAccountArray.forEach((account)=>{
sameAccountObject[account.optNumber]=account;
});
let result=options.map((option)=>{
let account=sameAccountObject[option.optNumber];
if(account){
option.exist=account.exist;
}
return option;
});
console.log(result);