如何通过删除数组中的重复值来获取值的计数

时间:2017-09-11 10:36:41

标签: javascript

我有一个例如

的数组
0: fname: "apple"
    Count: 2;
1: fname: "banana"
    Count: 2;
2: fname: "orange"
    Count: 2;
3:fname: "kiwi"
    Count: 1;

现在我想通过删除下面类型对象数组中的重复值来获取计数

{{1}}

任何人都可以帮助我获取此对象数组

4 个答案:

答案 0 :(得分:0)

var Fruits = ["apple","banana","apple", "orange","banana","kiwi","orange"];

var uniqueArr = Fruits.filter(function(elem, index, self) {
    return index == self.indexOf(elem);
})

var resObjArr = [];

uniqueArr.forEach(function(ele){
  var count = 0;
  var resObj = {};
  Fruits.forEach(function(eleF){
    if(ele == eleF) count++;
  })
  resObj['fname'] = ele;
  resObj['Count'] = count;
  resObjArr.push(resObj);
})

console.log(resObjArr)

从数组中删除重复项。并计算主数组中的不同元素它出现的次数。然后将其推送到结果对象。

答案 1 :(得分:0)

Array.prototype.reduce()方法:



var fruits = ["apple","banana","apple", "orange","banana","kiwi","orange"],
    result = [];
	
fruits.reduce(function(r, i){
    (r[i])? r[i].count += 1 : result.push((r[i] = {fname: i, count: 1}));		
    return r;
}, {});
	
console.log(result);




答案 2 :(得分:0)

arr = []
for(var i = 0; i < Fruits.length; i++){
    if (arr.indexOf(Fruits[i]) == -1){
        arr.push(Fruits[i])    
    }
}

objects = []

for (var a = 0; a < arr.length; a++){
    var count = Fruits.filter(function(fruit) fruit == arr[a])
    objects.push({"fname": arr[a], "count": count.length})  
}

答案 3 :(得分:0)

var Fruits = ["apple","banana","apple", "orange","banana","kiwi","orange"];

var uniqueArr = new Set(Fruits);
var result = [];
uniqueArr.forEach(function(ele){
  var count = 0;
  var resObj = {};
   Fruits.forEach(function(eleF){
       if(ele == eleF)
      count++;

  })
  resObj['fname'] = ele;
  resObj['Count'] = count;
  result.push(resObj);
})