实现 JS 根据 JSON 数据中的某一个属性来给数据分组的方法,可以使用 Array.prototype.reduce() 方法和 object[key] 或 Object.assign() 来处理分组数据。
以下是具体步骤:
-
首先,使用
Array.prototype.reduce()
方法来遍历 JSON 数据,并将其分组为一个对象。 -
在 reduce() 方法内,定义一个对象作为累加器。
-
在遍历 reduce() 方法中,我们可以使用每一个 JSON 数据项的特定属性来确定分组的方法。每一组的唯一标识被用作对象的“键”,而组的项被推送到对象中。
-
最后,我们使用
Object.values()
方法将对象的值转换为原始数组,以便输出或其他用途。
以下是具体的代码实现示例:
// 假设我们需要根据users的age,将用户分为age不同的组
let users = [
{name: 'Alice', age: 20},
{name: 'Bob', age: 25},
{name: 'Charlie', age: 20},
{name: 'David', age: 22},
{name: 'Eva', age: 25}
];
let grouped = users.reduce((acc, cur) => {
if (!acc[cur.age]) {
acc[cur.age] = [];
}
acc[cur.age].push(cur);
return acc;
}, {});
console.log(grouped);
// 输出:
// {
// 20: [
// {name: 'Alice', age: 20},
// {name: 'Charlie', age: 20}
// ],
// 22: [
// {name: 'David', age: 22}
// ],
// 25: [
// {name: 'Bob', age: 25},
// {name: 'Eva', age: 25}
// ]
// }
在上面的示例中,我们使用 reduce() 方法,将 users 列表分组为根据 age 属性分配的对象。注意,在检查累加器对象时,我们使用了 if 语句,以防其中没有已使用的 agegroup。
以下是第二个示例,此示例需要处理对象中包含数组的情况:
let data = [
{"name":"Alice","books":[{"title":"Journey to the Center of the Earth","author":"Jules Verne"},{"title":"Inferno","author":"Dan Brown"}]},
{"name":"Bob","books":[{"title":"Jurassic Park","author":"Michael Crichton"},{"title":"The Shining","author":"Stephen King"}]},
{"name":"Charlie","books":[{"title":"The Da Vinci Code","author":"Dan Brown"},{"title":"The Girl with the Dragon Tattoo","author":"Stieg Larsson"}]}
];
let groupByAuthor = data.reduce((acc, cur) => {
cur.books.forEach((book) => {
if (!acc[book.author]) {
acc[book.author] = [];
}
acc[book.author].push(book.title);
});
return acc;
}, {});
console.log(groupByAuthor);
// 输出:
// {
// "Jules Verne": [
// "Journey to the Center of the Earth"
// ],
// "Dan Brown": [
// "Inferno",
// "The Da Vinci Code"
// ],
// "Michael Crichton": [
// "Jurassic Park"
// ],
// "Stephen King": [
// "The Shining"
// ],
// "Stieg Larsson": [
// "The Girl with the Dragon Tattoo"
// ]
// }
在上面的示例中,我们使用 reduce() 和 forEach() 方法,将 data 列表分组为根据书籍作者分配的对象。注意,在检查累加器对象时,我们使用了 if 语句,以防其中没有所需的 author 分组。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js根据json数据中的某一个属性来给数据分组的方法 - Python技术站