簡體   English   中英

2個數組之間的Javascript計數

[英]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);

https://jsfiddle.net/Law7rzc2/

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM