我有一个 JSON 数组:
[{ id: 1, client: "Microsoft" },{ id: 2, client: "Microsoft" },{ id: 3, client: "Apple" }]
我想按“客户端”对其进行分组,但我在 javascript 中遇到了困难。在 PHP 中我通常会做这样的事情:
$group = array();
foreach ($array as $item) {
$group[ $item['client'] ] = $item;
}
return $group;
但是这个方法在多维数组的 javascript 中完全不起作用
var group = [];
for ( i=0 ... ) {
var client = array[i].client;
group[ client ].push( array[i] );
}
我如何将上面的数组分组为这样的:
[{ "Microsoft": [{...}], "Apple":[{...}] }]
甚至
[{ client: "Microsoft", "items": [{...}] }, { client: "Apple", items: [{...}] }]
最佳答案
为此,您需要一个对象,而不是数组:
var array = [{ id: 1, client: "Microsoft" },{ id: 2, client: "Microsoft" },{ id: 3, client: "Apple" }];
var group = {};
for (var i=0; i<array.length; i++) {
var client = array[i].client;
group[client] = group[client] || []; // create array for client if needed
group[client].push(array[i]);
}
console.log(group);
请务必记住,生成的对象将包含对原始数组中对象的引用。例如:
array[0].id = 100;
group.Microsoft[0].id; // 100
关于Javascript 将数组项推送到命名索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16722962/