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

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

Javascript - 平面圖的解決方法

Javascript - 平面圖的解決方法

桃花長相依 2022-06-16 17:07:10
所以我一直在尋找一些平面地圖的解決方法,因為它在 IE 上不起作用,我找到了這個:但我真的不明白為什么它會起作用var gadjets = [  {computers:['asus', 'hp'],  sellphones:['Galaxy', 'Nokia']  },  {computers:['dell', 'insys'],  sellphones:['iphone', 'samsung']  }];const getValues = gadjets.reduce((acc, gadjet) => acc.concat(gadjet[computers]), []) // instead of gadjets.flatMap(gadjet=> gadjet[computers])此代碼返回:['asus','hp','dell','insys']但它不應該返回:['asus','hp'],['dell', 'insys']
查看完整描述

3 回答

?
滄海一幻覺

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

這是因為reduce將你給它的元素加起來。例如,采用以下代碼:


let arr = [1,2,3,4,5];

console.log(arr.reduce((before, value)=>before+value));

此代碼獲取每個value并將其添加到before. 然后它將添加的值傳遞給變量中的reduce,的下一次迭代。before


在您的代碼中,您將一個數組傳遞給before,或者在您的情況下acc,并從該數組連接(合并)一個新數組gadgets['computers']并返回該數組。這將根據對象數組創建計算機列表。


更多信息在reduce 這里。


查看完整回答
反對 回復 2022-06-16
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

如果您希望輸出是數組數組。嘗試這個:


var gadjets = [

  { computers: ["asus", "hp"], sellphones: ["Galaxy", "Nokia"] },

  { computers: ["dell", "insys"], sellphones: ["iphone", "samsung"] }

];

const groupBy = key => {

  let res = gadjets.reduce((objectsByKeyValue, obj) => {

               let arr = [];

               arr.push(obj[key]);

               return objectsByKeyValue.concat(arr);

        }, []);

   return res;

};

console.log(groupBy("computers"));


查看完整回答
反對 回復 2022-06-16
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

但它不應該返回嗎


我不確定你想在那里向我們展示什么,但如果你的意思是


[['asus','hp'],['dell', 'insys']]

那么不,不應該。concat將您傳遞的數組展平(到單個級別):


const a = [].concat(['asus','hp'], ['dell', 'insys']);

console.log(a); // ["asus", "hp", "dell", "insys"]


所以acc.concat(gadjet[computers])將這些數組中的每一個展平computers成一個新數組,這是reduce.


查看完整回答
反對 回復 2022-06-16
  • 3 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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