我有2个数组1.Options和2.sameAccountArray
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具有动态对象,而options
具有固定数量的元素。知道这是怎么回事吗?预先感谢
答案 0 :(得分:1)
尝试一下:
options.forEach(opt=>{
sameAccountArray.forEach(acObj=>{
if (opt.optNumber === acObj.optNumber) opt.exist = acObj.exist;
})
})
答案 1 :(得分:0)
map()方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。
您不能使用map()
函数来修改数组,而只能使用所需结果创建一个新数组。
答案 2 :(得分:0)
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);