0

JSON配列があります:

[{ id: 1, クライアント: "Microsoft" },{ id: 2, クライアント: "Microsoft" },{ id: 3, クライアント: "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":[{...}] }]

あるいは

[{ クライアント: "Microsoft", "アイテム": [{...}] }, { クライアント: "Apple", アイテム: [{...}] }]

4

1 に答える 1

6

そのためには、配列ではなくオブジェクトが必要です。

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
于 2013-05-23T20:11:42.943 に答える