js将json数组按照某一属性值进行数组划分
时间: 2024-03-12 15:45:22 浏览: 62
ajax响应json字符串和json数组的实例(详解)
你可以使用Array.prototype.reduce()方法来将JSON数组按照某一属性值进行数组划分。具体实现方法如下:
假设有如下JSON数组:
```javascript
const data = [
{ name: 'Alice', age: 30, city: 'Beijing' },
{ name: 'Bob', age: 25, city: 'Shanghai' },
{ name: 'Charlie', age: 40, city: 'Beijing' },
{ name: 'David', age: 35, city: 'Shanghai' },
{ name: 'Eva', age: 28, city: 'Guangzhou' },
{ name: 'Frank', age: 45, city: 'Beijing' },
];
```
如果要按照城市将数组划分为多个子数组,可以使用如下代码:
```javascript
const result = data.reduce((acc, cur) => {
const city = cur.city;
if (!acc[city]) {
acc[city] = [];
}
acc[city].push(cur);
return acc;
}, {});
```
这里使用了一个空对象作为累加器(即reduce()方法的第二个参数)。在遍历JSON数组的过程中,将每个元素按照城市属性值归入对应的子数组中。最终,reduce()方法返回的结果就是一个以城市名称为属性名、以子数组为属性值的对象。
例如,执行以上代码后,result对象的值为:
```javascript
{
Beijing: [
{ name: 'Alice', age: 30, city: 'Beijing' },
{ name: 'Charlie', age: 40, city: 'Beijing' },
{ name: 'Frank', age: 45, city: 'Beijing' }
],
Shanghai: [
{ name: 'Bob', age: 25, city: 'Shanghai' },
{ name: 'David', age: 35, city: 'Shanghai' }
],
Guangzhou: [
{ name: 'Eva', age: 28, city: 'Guangzhou' }
]
}
```
这样,你就成功将JSON数组按照城市属性值进行了数组划分。
阅读全文