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

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

在 JavaScript 中使用 Map、Reduce 和 Filter 從嵌套數(shù)組打印

在 JavaScript 中使用 Map、Reduce 和 Filter 從嵌套數(shù)組打印

哈士奇WWW 2023-11-11 21:43:56
最終目的是為以下數(shù)組中的每個(gè)名稱獲取一個(gè)。(類似于下面代碼片段底部注釋掉的行)如果有同名,則只取數(shù)量最多的,如果有重復(fù),則只取版本較高的。我嘗試使用map、reduce的組合。請(qǐng)幫我解決這個(gè)問(wèn)題。//Original arrayvar arr = [  {'name': 'b', 'version': '103', 'count': 10},   {'name': 'a', 'version': '0.1b', 'count': 73},   {'name': 'b', 'version': '109', 'count': 67},   {'name': 'a', 'version': '1.0.3', 'count': 100},   {'name': 'a', 'version': '2.1.0', 'count': 100},   {'name': 'c', 'version': 'a103', 'count': 30},   {'name': 'c', 'version': 'a111', 'count': 100}];//expected console output// { name: 'a', version: '2.1.0', count: 100 }// { name: 'b', version: '109', count: 67 }// { name: 'c', version: 'a111', count: 100 }首先,作為該過(guò)程的“一部分”,我嘗試從數(shù)組中獲取“a”。var filteredArr = arr.filter(item => item.name === 'a');var m = Math.max(...(filteredArr.map(({count}) => count))),  maxes = arr.map(({count}) => count).reduce((p,c,i,a) => c ==  m ? p.concat(i) : p,[]);console.log(maxes);我期望從上面得到 [3, 4],但它打印出 [3, 4, 6]。=====附加問(wèn)題:我該如何處理這另一個(gè)原始的預(yù)期。//Another original array.var arr2 = [   { name: 'a', version: '0.1', count: 1 },  { name: 'b', version: '216', count: 1 },  { name: 'b', version: '209', count: 1 },  { name: 'b', version: '216', count: 1 },  { name: 'b', version: '216', count: 1 },  { name: 'b', version: '213', count: 1 },  { name: 'b', version: '213', count: 1 },  { name: 'b', version: '209', count: 1 },  { name: 'b', version: '216', count: 1 },  { name: 'b', version: '216', count: 1 }];//expected output// { name: 'a', version: '0.1', count: 1 },// { name: 'b', version: '216', count: 5 },// { name: 'b', version: '209', count: 2 },// { name: 'b', version: '213', count: 2 }
查看完整描述

2 回答

?
弒天下

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

您可以Array#reduce與對(duì)象一起使用來(lái)存儲(chǔ)每個(gè)名稱的對(duì)象。


var arr = [

  {'name': 'b', 'version': '103', 'count': 10}, 

  {'name': 'a', 'version': '0.1b', 'count': 73}, 

  {'name': 'b', 'version': '109', 'count': 67}, 

  {'name': 'a', 'version': '1.0.3', 'count': 100}, 

  {'name': 'a', 'version': '2.1.0', 'count': 100}, 

  {'name': 'c', 'version': 'a103', 'count': 30}, 

  {'name': 'c', 'version': 'a111', 'count': 100}

];

const res = Object.values(arr.reduce((acc,{name, version, count})=>{

  if(!acc[name] || acc[name] && 

          (acc[name].count < count 

           || acc[name].count === count && acc[name].version < version)){

    acc[name] = {name, version, count};

  }

  return acc;

}, {}));

console.log(res);


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

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

看來(lái)您在第二種情況下想要做的是聚合count具有相同name和的條目的屬性version(類似于數(shù)據(jù)庫(kù)中的COUNT+GROUP BY查詢SQL)。


在這種情況下,您可以首先在第一級(jí)計(jì)算dictionary_res索引,然后在第二級(jí)計(jì)算索引:nameversion


dictionary_res = arr2.reduce((acc, { name, version, count }) => {

  if (!acc[name] || (acc[name] && !acc[name][version])) {

    acc[name] = acc[name] || {}

    acc[name][version] = { count: count }

  } else {

    acc[name][version]['count'] = acc[name][version]['count'] + count

  }

  return acc

}, {})

dictionary_res產(chǎn)生一個(gè)非常接近您想要的值:


{

  a: { '0.1': { count: 1 } },

  b:

  { '209': { count: 2 }, '213': { count: 2 }, '216': { count: 5 } }

}

但是,您仍然需要將其轉(zhuǎn)換為數(shù)組才能完全實(shí)現(xiàn)您想要的:


array_res = Object.keys(dictionary_res).reduce((acc, name) => {

  Object.keys(dictionary_res[name]).forEach((version) => (

    acc.push({ name, version, count: dictionary_res[name][version]['count'] })

  ))

  return acc

}, [])

array_res現(xiàn)在產(chǎn)生預(yù)期值:


[ { name: 'a', version: '0.1', count: 1 },

  { name: 'b', version: '209', count: 2 },

  { name: 'b', version: '213', count: 2 },

  { name: 'b', version: '216', count: 5 } ]


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

添加回答

舉報(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)