I have this javascript object. How can iterate through its properties and count the number of one specific value?
angular.module('App',[])
.controller('mainCtrl', ['$scope', function ($scope) {
var data = {
"plans":[
{
"id":1,
"code":"NEXT_DAY_500gm",
"name":"Next Day less than 500gm",
"cost":55,
"duration":24,
"min_weight":0,
"max_weight":500,
"COD":1,
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00"
},
{
"id":2,
"code":"NEXT_DAY_500gm_1kg",
"name":"Next Day 500gm to 1kg",
"cost":70,
"duration":24,
"min_weight":501,
"max_weight":1000,
"COD":1,
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00"
},
{
"id":3,
"code":"NEXT_DAY_1kg_2kg",
"name":"Next Day 1kg to 2kg",
"cost":95,
"duration":24,
"min_weight":1001,
"max_weight":2000,
"COD":1,
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00"
},
{
"id":4,
"code":"SAME_DAY_500gm",
"name":"Same Day less than 500gm",
"cost":95,
"duration":8,
"min_weight":0,
"max_weight":500,
"COD":1,
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00"
},
{
"id":5,
"code":"SAME_DAY_500gm_1kg",
"name":"Same Day 500gm to 1kg",
"cost":130,
"duration":8,
"min_weight":501,
"max_weight":1000,
"COD":1,
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00"
},
{
"id":6,
"code":"SAME_DAY_1kg_2kg",
"name":"Same Day 1kg to 2kg",
"cost":165,
"duration":8,
"min_weight":1001,
"max_weight":2000,
"COD":1,
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00"
}
]
};
$scope.data1=data;
}]);
My concept is i want to count how many times the "status" field is "COMPLETE"and assign that count in a variable. Say if the complete is 4 times my sale will be equal to 4. How can i do that? Any hint?
You need to use filter here:
var count = data.filter(function(obj) {
return obj.status === 'COMPLETED';
}).length;
console.log(count);
The
forEach()
method executes a provided function once per array element.
var data = [{ "id": 23, "sender_id": 3, "courier_id": 0, "deliverer_id": 0, "status": "PENDING", "consignment_id": "55C0A999", "sender_name": "asdasdas d", "cost": "40", "package_description": "asdasdasd", "sender_address": "asdasdasd", "sender_longitude": "", "sender_latitude": "", "sender_number": null, "receiver_address": "adasdasd", "receiver_name": "Shifat Adnan", "receiver_number": "01713206053", "receiver_longitude": "", "receiver_latitude": "", "current_longitude": "", "current_latitude": "", "deliverer": null, "recipient_pays": 0, "instructions": "2332323", "payment_status": null, "cod": 0, "recipient_zone_id": 2, "plan_id": 2, "store_id": null, "storeproduct_id": null, "created_at": "2015-08-04 12:01:29" }, { "id": 28, "sender_id": 5, "courier_id": 0, "deliverer_id": 0, "status": "COMPLETED", "consignment_id": "10F317", "sender_name": "bleh", "cost": "398", "package_description": "Business Order", "sender_address": "bleh", "sender_longitude": "bleh", "sender_latitude": "bleh", "sender_number": "bleh", "receiver_address": "kjakdjlsdjlaksdjl", "receiver_name": "Nigga", "receiver_number": "010203001", "receiver_longitude": "", "receiver_latitude": "", "current_longitude": "bleh", "current_latitude": "bleh", "deliverer": null, "recipient_pays": 0, "instructions": "jslklsdflkj", "payment_status": null, "cod": 0, "recipient_zone_id": null, "plan_id": 4, "store_id": null, "storeproduct_id": null, "created_at": "2015-10-04 09:36:23" }, { "id": 34, "sender_id": 5, "courier_id": 0, "deliverer_id": 0, "status": "PENDING", "consignment_id": "137F24", "sender_name": "bleh", "cost": "3223", "package_description": "Business Order", "sender_address": "bleh", "sender_longitude": "bleh", "sender_latitude": "bleh", "sender_number": "bleh", "receiver_address": "kasdlkaskd asldka", "receiver_name": "FAAskl", "receiver_number": "199102909", "receiver_longitude": "", "receiver_latitude": "", "current_longitude": "bleh", "current_latitude": "bleh", "deliverer": null, "recipient_pays": 0, "instructions": "dsdsdf", "payment_status": null, "cod": 0, "recipient_zone_id": 2, "plan_id": 3, "store_id": null, "storeproduct_id": null, "created_at": "2015-10-06 07:58:28" }, { "id": 35, "sender_id": 5, "courier_id": 0, "deliverer_id": 0, "status": "COMPLETED", "consignment_id": "13C476", "sender_name": "bleh", "cost": "3310", "package_description": "Business Order", "sender_address": "bleh", "sender_longitude": "bleh", "sender_latitude": "bleh", "sender_number": "bleh", "receiver_address": "sdfs dfasdfasdfasdf", "receiver_name": "sfasd", "receiver_number": "224", "receiver_longitude": "", "receiver_latitude": "", "current_longitude": "bleh", "current_latitude": "bleh", "deliverer": null, "recipient_pays": 0, "instructions": "dasdasd", "payment_status": null, "cod": 0, "recipient_zone_id": 2, "plan_id": 1, "store_id": 1, "storeproduct_id": 1, "created_at": "2015-10-06 12:54:14" }, { "id": 36, "sender_id": 5, "courier_id": 0, "deliverer_id": 0, "status": "COMPLETED", "consignment_id": "13C4B3", "sender_name": "bleh", "cost": "330", "package_description": "Business Order", "sender_address": "bleh", "sender_longitude": "bleh", "sender_latitude": "bleh", "sender_number": "bleh", "receiver_address": "sdfs dfasdfasdfasdf", "receiver_name": "Some full name", "receiver_number": "224", "receiver_longitude": "", "receiver_latitude": "", "current_longitude": "bleh", "current_latitude": "bleh", "deliverer": null, "recipient_pays": 0, "instructions": "dasdasd", "payment_status": null, "cod": 0, "recipient_zone_id": 3, "plan_id": 4, "store_id": 1, "storeproduct_id": 2, "created_at": "2015-10-06 12:55:15" }]; var count = 0; data.forEach(function(item) { if (item.status === 'COMPLETED') { ++count; } }); alert(count);
You can loop through your json
object like this:
var complete = 0;
for(var i = 0; i < data.length; i++) {
var obj = data[i];
if (obj['status'] == "COMPLETE"){
complete += 1;
}
}
//do something with complete.
var count = 0;
for (var i = 0, leng = data.plans.length; i < leng; i++)
{
if (data.plans[i].status === 'COMPLETE')
{
count++;
}
}
if (count === 4)
{
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.