Javascript 循环遍历2个数组,并将一个数组中的值赋给第二个数组的每个匹配对象

Javascript 循环遍历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

我有2个数组1.选项和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具有动态对象,而选项具有固定数量的元素。知道这里出了什么问题吗,伙计们?提前谢谢

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);