Javascript 使用计数对js字符串数组进行分组

Javascript 使用计数对js字符串数组进行分组,javascript,Javascript,我有简单的js数组 var fruit = [ 'apple' , 'apple' , 'orange' ] 我需要这个摸索,以便我能够以以下格式呈现数据: apple 2 orange 1 我尝试过创建两个数组,但都失去了控制。您可以通过迭代水果值并增加计数器: var result = {}; for (var i = 0, n = fruit.length; i < n; i++) { if (typeof result[fruit[i]] === 'undefined')

我有简单的js数组

var fruit = [ 'apple' , 'apple' , 'orange' ]
我需要这个摸索,以便我能够以以下格式呈现数据:

apple 2
orange 1

我尝试过创建两个数组,但都失去了控制。

您可以通过迭代
水果
值并增加计数器:

var result = {};
for (var i = 0, n = fruit.length; i < n; i++) {
  if (typeof result[fruit[i]] === 'undefined') {
    result[fruit[i]] = 1;
  } else {
    result[fruit[i]]++;
  }
}

console.log(result); // Object {apple: 2, orange: 1}
var result={};
for(变量i=0,n=fruit.length;i
这是一种方法:

var fruit = ['apple', 'apple', 'orange'];

var occurences = {};
for (var index = 0; index < fruit.length; index++) {
    var value = fruit[index];
    occurences[value] = occurences[value] ? occurences[value] + 1 : 1;
}

console.log(occurences);
var-fruit=['apple','apple','orange'];
变量发生={};
对于(var指数=0;指数<果长;指数++){
var值=水果[指数];
发生[值]=发生[值]?发生[值]+1:1;
}
console.log(事件);
记录的输出是一个包含
apple:2,orange:1}
的对象,您可以在这里看到:

var-fruits=['apple','apple','orange'];
var result={};
对于(变量i=0;i
您可以通过简化来简洁地执行此操作:

function count(xs) {
  return xs.reduce(function(a,e) {
    return a[e] = ++a[e]||1, a;
  },{});
}

count(fruit); //=> {apple:2, orange:1}
请尝试下划线功能:

var fruit = [ 'apple' , 'apple' , 'orange' ];
var count = _.countBy(fruit, function(el) {
    return el;
});
它还有其他非常有用的功能。

var-fruit=['apple','apple','orange';
var fruit = [ 'apple' , 'apple' , 'orange' ];
var counts = {};

for(var i =0; i < fruit.length;i++){
    counts[fruit[i]] = (counts[fruit[i]]) ? counts[fruit[i]] + 1:1;
}
变量计数={}; 对于(变量i=0;i

JS Fiddle:

向我们展示你已经尝试过的东西。我正要发布我自己的
reduce
,但后来我看到了那一小段美丽…-下划线也同样重要。这是一个不错的库,是的,但是对于所请求的功能来说可能有点太多了。
var fruit = [ 'apple' , 'apple' , 'orange' ];
var counts = {};

for(var i =0; i < fruit.length;i++){
    counts[fruit[i]] = (counts[fruit[i]]) ? counts[fruit[i]] + 1:1;
}