如果我有一個像下面這樣的 js 陣列,有沒有一種簡單的方法可以按年齡重新分組陣列值?我試圖將它減少為一個陣列,但它沒有幫助。它按年齡或姓名重新分組
let employees = [
{
firstName:"Zion",
lastName: "Rosy",
age: 25,
joinedDate:"January 24, 2020",
},
{
firstName: "Ana",
lastName: "Rosy",
age: 25,
joinedDate: "January 15, 2019",
},
{
firstName: "Zion",
lastName:"Albert",
age: 30,
joinedDate:"February 15, 2011",
},
];
像這樣按年齡重新分組:
let organizedByAge =
{
25: [
{
firstName:"Zion",
lastName: "Rosy",
age: 25,
joinedDate:"January 24, 2020",
},
{
firstName: "Ana",
lastName: "Rosy",
age: 25,
joinedDate: "January 15, 2019",
},
],
30: [
{
firstName:"Zion",
lastName:"Albert",
age: 30,
joinedDate:"February 15, 2011",
},
],
};
uj5u.com熱心網友回復:
const groupByKey = (_data, _key) => {
return _data.reduce((result, next) => {
const key = next[_key];
result[key] = result[key]?.length ? [...result[key], next] : [next];
return result;
}, {});
}
console.warn(groupByKey(employees, 'age'));
uj5u.com熱心網友回復:
有沒有一種簡單的方法可以按年齡重新分組陣列值?
在重寫陣列和物件時,最直接和可讀的方法通常是使用一個簡單的for回圈:
for (let i = 0; i < employees.length; i ) {
const age = employees[i]['age'];
if (organizedByAge.hasOwnProperty(age)) {
organizedByAge[age].push(employees[i]);
}
else {
organizedByAge[age] = [];
organizedByAge[age][0] = employees[i];
}
}
作業示例:
let employees = [
{
firstName:"Zion",
lastName: "Rosy",
age: 25,
joinedDate:"January 24, 2020",
},
{
firstName: "Ana",
lastName: "Rosy",
age: 25,
joinedDate: "January 15, 2019",
},
{
firstName: "Zion",
lastName:"Albert",
age: 30,
joinedDate:"February 15, 2011",
},
];
let organizedByAge = {};
for (let i = 0; i < employees.length; i ) {
const age = employees[i]['age'];
if (organizedByAge.hasOwnProperty(age)) {
organizedByAge[age].push(employees[i]);
}
else {
organizedByAge[age] = [];
organizedByAge[age][0] = employees[i];
}
}
console.log(organizedByAge);
uj5u.com熱心網友回復:
使用Array#reduce:
const employees = [
{ firstName:"Zion", lastName: "Rosy", age: 25, joinedDate:"January 24, 2020" },
{ firstName: "Ana", lastName: "Rosy", age: 25, joinedDate: "January 15, 2019" },
{ firstName: "Zion", lastName:"Albert", age: 30, joinedDate:"February 15, 2011" }
];
const organizedByAge = employees.reduce((map, e) => ({
...map,
[e.age]: [...(map[e.age] ?? []), e]
}), {});
console.log(organizedByAge);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/406981.html
標籤:
