簡體   English   中英

遍歷2個數組並將一個數組中的值分配給第二個數組的每個匹配對象

[英]Loop through 2 Arrays and assign a value from one array into each matching objects of second array

我有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)
                }

選項內部有很大的字段,但是我們不需要關心它。 options和sameAccountArray具有名為optNumber公共optNumber 我正在嘗試遍歷每個數組,並在optNumber相同的情況下為options數組的每個對象分配一個exist的值。 sameAccountArray已經具有正確的exist值,我只需要分配該值以匹配options數組的對象即可。 不知何故分配不正確。 請注意,選項數組和sameAccount數組的長度不同。 sameAccountArray具有動態對象,而options具有固定數量的元素。 知道這是怎么回事嗎? 提前致謝

嘗試這個:

options.forEach(opt=>{
    sameAccountArray.forEach(acObj=>{
      if (opt.optNumber === acObj.optNumber) opt.exist = acObj.exist;
    })
})

map()方法創建一個新數組,並在調用數組中的每個元素上調用提供的函數。

您不能使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM