第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JavaScript 減少內(nèi)部映射

JavaScript 減少內(nèi)部映射

www說 2022-10-13 10:54:28
我正在嘗試根據(jù)對(duì)象屬性之一的總和對(duì)對(duì)象數(shù)組進(jìn)行排序。本質(zhì)上,像這樣:array = [          {            id:4,            tally: [1, 3, 5]          },         {            id: 6,            tally: [2, 3, 6]         },         {            id: 9,            tally: [2, 1, -1]         }]如果我們將相應(yīng)tally的 s 相加,我們將分別得到 9、11 和 2,在這種情況下,我想要這樣的東西:array = [          {            id:6,            tally: [2, 3, 6]          },         {            id: 6,            tally: [1, 3, 5]         },         {            id: 9,            tally: [2, 1, -1]         }]我知道這是 的某種組合map,reduce但我正在努力了解如何以正確的 React 格式對(duì)其進(jìn)行編碼。
查看完整描述

3 回答

?
萬千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

您可以首先使用計(jì)算每個(gè)對(duì)象的總和,map然后reduce使用方法對(duì)該新數(shù)組進(jìn)行排序,sort然后使用另一種map方法刪除 sum 屬性


const array = [{

    id: 4,

    tally: [1, 3, 5]

  },

  {

    id: 6,

    tally: [2, 3, 6]

  },

  {

    id: 9,

    tally: [2, 1, -1]

  }

]


const sorted = array

  .map(({ tally, ...rest }) => ({

    sum: tally.reduce((r, e) => r + e, 0), tally, ...rest

  }))

  .sort((a, b) => b.sum - a.sum)

  .map(({ sum, ...rest }) => rest)


console.log(sorted)


查看完整回答
反對(duì) 回復(fù) 2022-10-13
?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊

您可以先將總和累加到 aMap中,其中每個(gè)鍵是id對(duì)象的,每個(gè)值是該對(duì)象tally數(shù)組的總和。您可以使用.reduce()來計(jì)算總和。這里acc是一個(gè)累積值,它從 0 開始,并在每次調(diào)用 reduce 回調(diào)時(shí)被添加。

獲得每個(gè)對(duì)象的總和后,您可以使用.sort()如下方式根據(jù)每個(gè)對(duì)象的總和進(jìn)行排序:

const array = [{ id: 4, tally: [1, 3, 5] }, { id: 6, tally: [2, 3, 6] }, { id: 9, tally: [2, 1, -1] }];

const sumMap = new Map(array.map(

  ({id, tally}) => [id, tally.reduce((acc, n) => acc+n, 0)])

);

const res = array.sort((a, b) => sumMap.get(b.id) - sumMap.get(a.id));


console.log(res);


查看完整回答
反對(duì) 回復(fù) 2022-10-13
?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

你可以這樣做sort:


var arr=[{id:4,

          tally: [1, 3, 5]},

         {id: 6,

          tally: [2, 3, 6]},

         {id: 9,

          tally: [2, 1, -1]}

]


var result =arr.sort((a,b)=>{

    aa = a.tally.reduce((acc,elem)=>acc+elem,0);

    bb = b.tally.reduce((acc,elem)=>acc+elem,0);

    return bb-aa;

});


console.log(result);


查看完整回答
反對(duì) 回復(fù) 2022-10-13
  • 3 回答
  • 0 關(guān)注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)