两个数组之间的Javascript计数

两个数组之间的Javascript计数,javascript,arrays,json,Javascript,Arrays,Json,我有2个数组对象,我需要对我们拥有的许多类型的卡进行计数 第一个对象包含所有汽车id,第二个列表包含汽车类型 以下是数据: var arr = { "categories": [{ "id": "100", "name": "category name", "car_id": "1" }, { "id": "192", "name": "category name here", "ca

我有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={
“汽车”:[{
“id”:“1”,
“名称”:“车辆名称”,
“车号”:“1”,
“类型”:“福特”
}, {
“id”:“4”,
“名称”:“名称2”,
“车号”:“25”,
“类型”:“福特”
}, {
“id”:“4”,
“名称”:“名称2”,
“车号”:“27”,
“类型”:“菲亚特”
}]
};
变量映射={
福特:0,
菲亚特:0,
马自达:0,,
迷你:0,
mg:0
};
arr2.cars.forEach(功能(项目){
映射[item.type]++;
});
控制台日志(map)

是进行这种数组计算的最佳选择。A将帮助您在遍历汽车阵列时跟踪独特的汽车品牌

var obj2={
“汽车”:[{
“id”:“1”,
“名称”:“车辆名称”,
“车号”:“1”,
“类型”:“福特”
}, {
“id”:“4”,
“名称”:“名称2”,
“车号”:“25”,
“类型”:“福特”
}, {
“id”:“4”,
“名称”:“名称2”,
“车号”:“27”,
“类型”:“菲亚特”
}]
};
const typeStat=cars=>{
让map=cars.reduce((m,{type})=>
m、 set(type,(m.get(type)| | 0)+1),newmap();
返回Array.from(map,([make,count])=>({make,count}));
};
let stats=typeStat(obj2.cars)
console.log(stats)您只需要

countBy(arr2.cars, 'type')

countBy
的实现留作练习。

没有JSON对象这样的东西。JSON始终是一个字符串。重新表述问题我将使用for in循环和一个对象,其中键作为汽车名称,值作为计数器。我认为这是一项非常简单的任务,在依赖堆栈溢出之前,您需要自己弄清楚“home many types of card”是什么意思?第一个数组如何计算?但根据定义,还有其他类型,无论是现在还是将来。因为OP提到有5个变量,所以我认为类型的数量是固定的。无论如何,这可以很容易地扩展到支持动态数量的类型。
countBy(arr2.cars, 'type')