我沒有得到用 if 條件撰寫的邏輯,我試圖控制臺記錄 typeof acc,但它是未定義的
let people = [
{ name: 'Alice', age: 21 },
{ name: 'Max', age: 20 },
{ name: 'Jane', age: 20 }
];
function groupBy(objectArray, property) {
return objectArray.reduce(function (acc, obj) {
let key = obj[property]
if (!acc[key]) {
acc[key] = []
}
acc[key].push(obj)
return acc
}, {})
}
let groupedPeople = groupBy(people, 'age')
// groupedPeople is:
// {
// 20: [
// { name: 'Max', age: 20 },
// { name: 'Jane', age: 20 }
// ],
// 21: [{ name: 'Alice', age: 21 }]
// }
uj5u.com熱心網友回復:
是reduce按特定屬性分組。這涉及在由每個分組鍵入的物件中創建陣列并將專案推入陣列。如果一個特定的專案是在迭代程序中遇到的其組的第一個成員,那么在鍵上還沒有要推送到的陣列。因此 -
if (!acc[key]) {
acc[key] = []
}
-- 檢查是否有一個可用的陣列在按鍵上。如果沒有,那么它將在要添加的組成員的鍵處添加一個陣列。因此,這個if條件只會對true每個組進行一次評估——第一次遇到該組的成員。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453413.html
標籤:javascript 数组 if 语句 减少
