[英]Javascript count between 2 arrays
我有2個數組對象,我需要對我們擁有的許多類型的卡進行計數。
第一個對象包含所有汽車ID,第二個列表包含汽車類型。
數據如下:
var arr = {
"categories": [{
"id": "100",
"name": "category name",
"car_id": "1"
}, {
"id": "192",
"name": "category name here",
"car_id": "25"
}, {
"id": "192",
"name": "category name here",
"car_id": "27"
}]
};
var arr2 = {
"cars": [{
"id": "1",
"name": "car name",
"car_id": "1",
"type": "ford"
}, {
"id": "4",
"name": "name 2",
"car_id": "25",
"type": "ford"
}, {
"id": "4",
"name": "name 2",
"car_id": "27",
"type": "fiat"
}]
};
汽車只有5種,因此我有5個變量:
var:
ford,
fiat,
mazda,
mini,
mg
因此,我最終需要做的是這樣的事情:
ford: 2;
fiat: 1;
mazda: 0;
mini: 0;
mg: 0;
我怎樣才能做到這一點?
如果您的類型數量是固定的,請嘗試這種方法
首先制作地圖
var map = {
ford: 0,
fiat: 0,
mazda: 0,
mini: 0,
mg: 0
};
現在迭代數組並按類型計數
arr2.cars.forEach( function( item ){
map[ item.type ]++;
});
您的地圖現在已填入值。
var arr2 = { "cars": [{ "id": "1", "name": "car name", "car_id": "1", "type": "ford" }, { "id": "4", "name": "name 2", "car_id": "25", "type": "ford" }, { "id": "4", "name": "name 2", "car_id": "27", "type": "fiat" }] }; var map = { ford: 0, fiat: 0, mazda: 0, mini: 0, mg: 0 }; arr2.cars.forEach(function(item) { map[item.type] ++; }); console.log(map);
var arr = {
"categories": [{
"id": "100",
"name": "category name",
"car_id": "1"
}, {
"id": "192",
"name": "category name here",
"car_id": "25"
}, {
"id": "192",
"name": "category name here",
"car_id": "27"
}]
};
var arr2 = {
"cars": [{
"id": "1",
"name": "car name",
"car_id": "1",
"type": "ford"
}, {
"id": "4",
"name": "name 2",
"car_id": "25",
"type": "ford"
}, {
"id": "4",
"name": "name 2",
"car_id": "27",
"type": "fiat"
}]
};
var carCount, typeCount;
arr.categories.forEach(function(item){
if(item.hasOwnProperty("car_id")){
carCount = arr.categories.length;
}
});
arr2.cars.forEach(function(item){
if(item.hasOwnProperty("type")){
typeCount = arr2.cars.length;
}
});
console.log(carCount);
console.log(typeCount);
Array.prototype.reduce是您進行此類數組計算的理想之選。 地圖將幫助您在遍歷汽車陣列時跟蹤獨特的汽車制造商。
var obj2 = { "cars": [{ "id": "1", "name": "car name", "car_id": "1", "type": "ford" }, { "id": "4", "name": "name 2", "car_id": "25", "type": "ford" }, { "id": "4", "name": "name 2", "car_id": "27", "type": "fiat" }] }; const typeStat = cars => { let map = cars.reduce((m, {type}) => m.set(type, (m.get(type) || 0) + 1), new Map()); return Array.from(map, ([make, count]) => ({make, count})); }; let stats = typeStat(obj2.cars) console.log(stats);
輸出量
[
{
"make": "ford",
"count": 2
},
{
"make": "fiat",
"count": 1
}
]
所有你需要的是
countBy(arr2.cars, 'type')
countBy
的實現countBy
練習。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.