2017-02-05 18 views
-1
//Start Array 
var array = [{name: "user1", items: ["123"]}, {name: "user2", items: ["234"]}, {name: "user1", items: ["345"]}]; 


//result 
array = [{name: "user1", items: ["123","345"]}, {name: "user2", items: ["234"]}]; 

私はNodeJSではなく、PHPのソリューションしか見つかりませんでした。開始配列からの結果をどのように実現するか考えている人は誰ですか?nodejsの同じキーを持つ配列をマージする

+0

あなたはこの質問から解決策を試してみました:http://stackoverflow.com/questions/33850412/merge-javascript-objects-in-array-同じ鍵で? –

+0

はい。トップの答えは私のために働かなかった。 出力[existingIndex] .value =出力[existingIndex] .value.concat(value.value); ^ TypeError:未定義の 'concat'プロパティを読み取ることができません 私はまた、他のソリューションを成功裏にテストしました。 –

+1

大丈夫です。私は「値」を「アイテム」に書き換えることを忘れていました。これがxDを動作させなかった理由です –

答えて

0

このコードを試してみてください。

var array = [{name: "user1", items: ["123"]}, {name: "user2", items: ["234"]}, {name: "user1", items: ["345"]}]; 
 

 
var temp = {}; 
 

 
array.forEach(x => { 
 
    temp[x.name] = temp[x.name] || { 'name' : x.name, 'items' : [] }; 
 
    temp[x.name].items = temp[x.name].items.concat(x.items); 
 
}); 
 

 
var result = Object.keys(temp).map(k => temp[k]); 
 

 
console.log(result);

関連する問題