从对象数组中获取唯一值

时间:2016-09-20 11:09:31

标签: javascript

我有以下代码:

        fetchDemo(carMakesUrl).then(function(result) {
            for(var i = 0; i < result.length; i++){
                for(var prop in result[i]){
                    if(prop.length > 1){
                        console.log(result[i]['make_country']);
                    }
                }
            }
        });

和“carMakesUrl”等于“https://rawgit.com/csabapalfi/20d74eb83d0be023205225f79d3e7964/raw/7f08af5c0f8f411f0eda1a62a27b9a4ddda33397/carmakes.json

我得到的回报是这样的:

4 Italy
4 UK
4 USA
4 Italy
8 UK
4 Germany
4 UK
4 USA
16 UK
4 Germany
8 UK
4 Italy
4 France
the list carries on..

我正在寻找的是:

意大利重复了17次,这意味着“它生产了17种类型的汽车”,因此其他国家将生产许多不同的汽车...

我怎样才能控制台.log以便只输出一次国家名称和它产生的汽车数量?

2 个答案:

答案 0 :(得分:1)

fetchDemo(carMakesUrl).then(function(result) {    
  var obj = {};
  result.forEach(function(ele,ind){obj[ele.make_country] = (obj[ele.make_country] || 0) + 1});
  console.log(obj);
});

你可以这样计算。

答案 1 :(得分:1)

我假设obj =结果。希望这对你有用。并且country_car_counter对象保存所需的输出

var country_car_counter = {};
      obj.map(function(item){
        var property = item.make_country;

         country_car_counter[property] = (country_car_counter[property])?country_car_counter[property] + 1 : 1 ;

      })
      console.log('this is the required object',country_car_counter)