3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
這是因?yàn)閞educe將你給它的元素加起來(lái)。例如,采用以下代碼:
let arr = [1,2,3,4,5];
console.log(arr.reduce((before, value)=>before+value));
此代碼獲取每個(gè)value并將其添加到before. 然后它將添加的值傳遞給變量中的reduce,的下一次迭代。before
在您的代碼中,您將一個(gè)數(shù)組傳遞給before,或者在您的情況下acc,并從該數(shù)組連接(合并)一個(gè)新數(shù)組gadgets['computers']并返回該數(shù)組。這將根據(jù)對(duì)象數(shù)組創(chuàng)建計(jì)算機(jī)列表。
更多信息在reduce 這里。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊
如果您希望輸出是數(shù)組數(shù)組。嘗試這個(gè):
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"));

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
但它不應(yīng)該返回嗎
我不確定你想在那里向我們展示什么,但如果你的意思是
[['asus','hp'],['dell', 'insys']]
那么不,不應(yīng)該。concat將您傳遞的數(shù)組展平(到單個(gè)級(jí)別):
const a = [].concat(['asus','hp'], ['dell', 'insys']);
console.log(a); // ["asus", "hp", "dell", "insys"]
所以acc.concat(gadjet[computers])將這些數(shù)組中的每一個(gè)展平computers成一個(gè)新數(shù)組,這是reduce.
添加回答
舉報(bào)