亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何沿索引添加多個數組中的對象

如何沿索引添加多個數組中的對象

偶然的你 2022-10-13 19:23:11
我有一個對象數組[  [{data:1},{data:2},{data:3}],  [{data:1},{data:2},{data:3}],  [{data:1},{data:2},{data:3}]]我需要[{data:3},{data:6},{data:9}]通過加法減少。添加索引 0 的對象,添加索引 1 的對象,以及添加索引 2 的對象。有沒有像reduce這樣的Javascript函數可以管理這個?
查看完整描述

2 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

前面的答案很好,但只有當你的數組總是相同的大小時它才有效。


例如,有這個初始輸入會破壞代碼:


[

  [{data:1},{data:2},{data:3}, {data:4}],

  [{data:1},{data:2},{data:3}],

  [{data:1},{data:2},{data:3}]

]

要解決這個問題,您可以在 reducer 中添加一個檢查,以確保下一個數組在該索引處有一個對象。


另一個問題是如果你有這個初始輸入:


[

  [{data:1},{data:2},{data:3}, {data:4}],

  [{data:1},{data:2},{data:3}, {data:4}, {data:5}],

  [{data:1},{data:2},{data:3}]

]

第二個數組中的最后一個對象將被忽略,因為初始 reducer 只考慮length第一個數組的。


要處理這些異常,您可以使用此重構代碼(基于@mickl 答案):


// Initial input with different format

const initialInput = [

  [{data:1},{data:2},{data:3}, {data:4}],

  [{data:1},{data:2},{data:3}, {data:4}, {data:5}],

  [{data:1},{data:2},{data:3}]

];


// Sort and reverse to get the array with most items first

const sortedInput = initialInput.sort().reverse();


// Finally use the refactored reducer

const result = sortedInput.reduce((arr,cur) => {

  return arr.map((val, i) => {

    // This "if" checks if the next array has an item on the same index of previous array

    // Which is not the case, for example, from the second to the third item

    if (cur[i] && cur[i].data) {

      return { data: val.data + cur[i].data }

    } else {

      return { data: val.data}

    }

  })

});


console.log(result)


查看完整回答
反對 回復 2022-10-13
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

您可以使用array.reduce跨多個數組聚合數據array.map并對值求和,因為它采用箭頭函數,其中第二個參數表示當前處理元素的索引:


let input = [

  [{data:1},{data:2},{data:3}],

  [{data:1},{data:2},{data:3}],

  [{data:1},{data:2},{data:3}]

];


let result = input.reduce((arr,cur) => 

                           arr.map((val, i) => ({ data: val.data + cur[i].data })));


console.log(result);


查看完整回答
反對 回復 2022-10-13
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號