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

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

如何獲取具有相同名稱和ID的對(duì)象的最大值

如何獲取具有相同名稱和ID的對(duì)象的最大值

繁星淼淼 2023-08-18 16:28:49
我有一個(gè)如下所示的對(duì)象數(shù)組   [             {value: 1, id: 1, name: "x"},            {value: 5, id: 1, name: "x"},            {value: 1, id: 1, name: "y"},            {value: 8, id: 1, name: "y"},            {value: 1, id: 2, name: "x"},            {value: 3, id: 2, name: "x"},            {value: 1, id: 2, name: "y"},            {value: 4, id: 2, name: "y"}     ]我想獲取具有相同“名稱”和“id”的最大值的對(duì)象并將其推入一個(gè)新數(shù)組中,預(yù)期輸出如下:   [     {value: 5, id: 1, name: "x"},     {value: 8, id: 1, name: "y"},     {value: 3, id: 2, name: "x"},     {value: 4, id: 2, name: "y"},   ]謝謝
查看完整描述

2 回答

?
catspeake

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

你可以使用reduce方法來(lái)做到這一點(diǎn),


const data = [ 

            {value: 1, id: 1, name: "x"},

            {value: 5, id: 1, name: "x"},

            {value: 1, id: 1, name: "y"},

            {value: 8, id: 1, name: "y"},

            {value: 1, id: 2, name: "x"},

            {value: 3, id: 2, name: "x"},

            {value: 1, id: 2, name: "y"},

            {value: 4, id: 2, name: "y"}

     ]


const res = data.reduce((prev, curr) => {

   const index = prev.findIndex((item) => item.id === curr.id && item.name === curr.name);

   if(index > -1) {

      const obj = prev[index];

      if(obj.value < curr.value) {

          prev[index] = {...obj, value: curr.value};

          return prev;

      }

   }

   prev.push(curr);

   return prev;

}, []);

console.log(res);


查看完整回答
反對(duì) 回復(fù) 2023-08-18
?
幕布斯6054654

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

Reduce用于從數(shù)組中的所有項(xiàng)返回一個(gè)新值,該值基本上是累加器(與先前的值相加)。在這里我們可以使用它使用特定鍵對(duì)項(xiàng)目進(jìn)行分組。正如您所寫(xiě),您希望項(xiàng)目顯示具有相同 id 和名稱的最大值的記錄,這些值可以作為鍵(讓我們將它們視為該對(duì)象的復(fù)合私鑰)。

在每次迭代中,我們檢查是否已經(jīng)有一個(gè)帶有該鍵的對(duì)象添加到列表中,如果沒(méi)有,我們添加我們現(xiàn)在所在的對(duì)象(在迭代期間),或者如果它的值小于我們當(dāng)前所在的對(duì)象。如果該值較小,我們將使用當(dāng)前對(duì)象覆蓋該對(duì)象。

最后,我們使用 JS?Object.values方法去除鍵并僅返回對(duì)象的值。

const list = [?

? {value: 1, id: 1, name: "x"},

? {value: 5, id: 1, name: "x"},

? {value: 1, id: 1, name: "y"},

? {value: 8, id: 1, name: "y"},

? {value: 1, id: 2, name: "x"},

? {value: 3, id: 2, name: "x"},

? {value: 1, id: 2, name: "y"},

? {value: 4, id: 2, name: "y"}

?];


const groupedResults = list.reduce((result, currentObject) => {


? const currentKey = currentObject.id + currentObject.name;


? if (!result[currentKey] || result[currentKey].value <? ?currentObject.value) { /* Here we check if object with certain key was assigned to previously or if it was is the value smaller than of the object that we are currently seeing */

? ? result[currentKey] = Object.assign({}, currentObject) //We need to do copy of the object (it can be also done using object destructuring) in order to have a new object that will not be bound by reference with the original one

? };


? return result;

}, {});


const requestedList = Object.values(groupedResults);

console.log(requestedList)


查看完整回答
反對(duì) 回復(fù) 2023-08-18
  • 2 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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