2017-01-10 3 views
3

私はwso2カーボンダッシュボードで作業しています。私のテーブルは2つのフィールド(名前と番号)を含んでいます。オブジェクトに重複した名前がありますが、番号は異なります。私は数字の追加で一意の名前をしたい。数字の付いたオブジェクトの配列から一意の値を取得する方法

[ 
     { 
     "Name":"Abc", 
     "number":2 
     }, 
     { 
     "Name":"bcd", 
     "number":3 
     }, 
     { 
     "Name":"Abc", 
     "number":5 
     } 

]

期待出力

[ 
{ 
"name":"Abc", 
"Number":7 
}, 
{ 
"name":"bcd", 
"Number":3 
} 
] 

私は、このような課題を達成するためにJavaスクリプトを使用しています。助けてください

+1

の可能性のある重複した[オブジェクトのjavascript配列にGROUPBYするための最も効率的な方法は何ですか?](http://stackoverflow.com/questions/14446511/what-is-the最も効率的なメソッドからグループへのオブジェクトの配列を使用した) – Andreas

+0

簡単なコードをお勧めしますか?私はjs @ Andreasの新人です –

答えて

2

参照オブジェクトでArray#reduceメソッドを使用してください。

var data = [{ 
 
    "Name": "Abc", 
 
    "number": 2 
 
}, { 
 
    "Name": "bcd", 
 
    "number": 3 
 
}, { 
 
    "Name": "Abc", 
 
    "number": 5 
 
}]; 
 

 
// object for index reference 
 
var ref = {}; 
 

 
// iterate and generate the array 
 
var res = data.reduce(function(arr, o) { 
 
    // check index already defined 
 
    if (!(o.Name in ref)) { 
 
    // if not defined then define index 
 
    ref[o.Name] = arr.length; 
 
    // and push the element 
 
    // you can also use 
 
    // arr.push({Name:o.Name, number:o.number}); 
 
    arr.push(Object.assign({}, o)); 
 
    } else { 
 
    // if index already defined update the number 
 
    arr[ref[o.Name]].number += o.number; 
 
    } 
 
    // return the array reference 
 
    return arr; 
 
    // set initial value as empty array 
 
}, []); 
 

 
console.log(res);

+0

@Sam:喜んで助けてください:) –

関連する問題