Count particular key value from array of object
Use Array#reduce
method
var res = data.reduce(function(obj, v) { // increment or set the property // `(obj[v.status] || 0)` returns the property value if defined // or 0 ( since `undefined` is a falsy value obj[v.status] = (obj[v.status] || 0) + 1; // return the updated object return obj; // set the initial value as an object}, {})
Although you can use Array#forEach
method with the same code.
var res = {};data.forEach(function(v) { res[v.status] = (res[v.status] || 0) + 1;})
var obj = [ { "id": "65:0", "status": "ORANGE" }, { "id": "65:0", "name": "BIU", "status": "GREEN" }, { "id": "65:0", "name": "BIU", "status": "ORANGE" }, { "id": "65:0", "status": "YELLOW" }, { "id": "65:0", "status": "RED" }, { "id": "65:0", "status": "GREEN" }, { "id": "65:0", "status": "GREEN" }, { "id": "65:0", "status": "ORANGE" }, { "id": "65:0", "status": "YELLOW" }, { "id": "65:0", "status": "GREEN" }] ;var rez={};obj.forEach(function(item){ rez[item.status] ? rez[item.status]++ : rez[item.status] = 1;});console.log(rez);
Do you want this output format?
var json=[ { "id": "65:0", "status": "ORANGE" }, { "id": "65:0", "status": "GREEN" }, { "id": "65:0", "status": "ORANGE" }, { "id": "65:0", "status": "YELLOW" }, { "id": "65:0", "status": "RED" }, { "id": "65:0", "status": "GREEN" }, { "id": "65:0", "status": "GREEN" }, { "id": "65:0", "status": "ORANGE" }, { "id": "65:0", "status": "YELLOW" }, { "id": "65:0", "status": "GREEN" }] ;var obj={};json.forEach(function(item){obj[item.status]? obj[item.status]++ : obj[item.status]=1;});console.log(obj)