2016-08-19 7 views
2

をカウントすると、私がすべてのオブジェクトからnameをスライスし、同じ要素の数をカウントしようとしているスライスオブジェクトからプロパティと

[{"name":"Bryan","id":016, "counter":0}, {"name":"John","id":04, "counter":2}, {"name":"Alicia","id":07, "counter":6}, {"name":"Jenny","id":015, "counter":9}, {"name":"Bryan","id":016, "counter":0}, {"name":"Jenny","id":015, "counter":9}, {"name":"John","id":04, "counter":2}, {"name":"Jenny" ,"id":015, "counter":9}]; 

のようにオブジェクトの配列から単一のプロパティをスライスすることは可能ですが(3つのオブジェクトがあります次のような構造を達成するために)名前ジェニーと:

[{"name":"Bryan","Number":2}, 
{"name":"John","Number":2}, 
{"name":"Alicia","Number":1}, 
{"name":"Jenny","Number":3}] 
+1

こんにちはコーリーは、はい、それは可能です。これまでに何を試しましたか? – nils

答えて

1

カウントされた名前。

var data = [{ name: "Bryan", id: "016", counter: 0 }, { name: "John", id: "04", counter: 2 }, { name: "Alicia", id: "07", counter: 6 }, { name: "Jenny", id: "015", counter: 9 }, { name: "Bryan", id: "016", counter: 0 }, { name: "Jenny", id: "015", counter: 9 }, { name: "John", id: "04", counter: 2 }, { name: "Jenny", id: "015", counter: 9 }], 
 
    grouped = []; 
 

 
data.forEach(function (a) { 
 
    if (!this[a.name]) { 
 
     this[a.name] = { name: a.name, Number: 0 }; 
 
     grouped.push(this[a.name]); 
 
    } 
 
    this[a.name].Number++; 
 
}, Object.create(null)); 
 

 
console.log(grouped);

2

はすでに存在idcounter小道具を無視しますか?

あなたはユニークな名前を追跡するオブジェクトを作成し、最後の配列に戻って変換することができます:あなたが参照としてハッシュテーブルを使用することができ

var data = [{"name": "Bryan", "id": 016, "counter": 0}, { "name": "John", "id": 04, "counter": 2}, { "name": "Alicia", "id": 07, "counter": 6}, { "name": "Jenny", "id": 015, "counter": 9}, { "name": "Bryan", "id": 016, "counter ": 0}, { "name": "Jenny", "id": 015, "counter ": 9}, { "name": "John", "id": 04, "counter": 2}, { "name": "Jenny", "id": 015, "counter": 9}]; 
 

 
var result = data.reduce(function(result, item) { 
 
    if (!result[item.name]) { 
 
    result[item.name] = { 
 
     name: item.name, 
 
     counter: 0 
 
    }; 
 
    } 
 

 
    result[item.name].counter += 1; 
 
    
 
    return result; 
 
}, {}); 
 

 
console.log(Object.keys(result).map(function(key) { return result[key] }));

1

この打撃を与えます。カウント数がnameDictとなっている名前の辞書を作成し、リストを繰り返してカウントします。

var arr = [{"name":"Bryan","id":"016", "counter":0}, {"name":"John","id":"04", "counter":2}, {"name":"Alicia","id":"07", "counter":6}, {"name":"Jenny","id":"015", "counter":9}, {"name":"Bryan","id":"016", "counter":0}, {"name":"Jenny","id":"015", "counter":9}, {"name":"John","id":"04", "counter":2}, {"name":"Jenny","id":"015", "counter":9}]; 
 
var nameDict = {}; 
 

 
for(var i = 0; i < arr.length; i++) 
 
{ 
 
    var name = arr[i].name; 
 
    if(nameDict[name] == undefined){ 
 
     //haven't encountered this name before so we need to create a new entry in the dict 
 
     nameDict[name] = 1 
 
    } else { 
 
     //otherwise increment the count 
 
     nameDict[name] += 1 
 
    } 
 
} 
 

 
console.log(JSON.stringify(nameDict));

関連する問題