javascript - JS:获取相同值的数量

标签 javascript algorithm

假设我有这个数组:

[1, 2, 2, 3, 3, 3, 4]

如何返回一个数组/对象,该数组/对象包含一个值出现的次数,如:
{1:1, 2:2:, 3:3, 4:1}

以下是我目前掌握的情况:
// sort first
arr.sort();

for (var i = 0, l = arr.length, i < l, i++) {
    // what should go here ???? 
}

最佳答案

// Our results will be loaded into cont
var cont = {};

// For each number in our value array
for ( var i = 0; i < vals.length; i++ ) {
   // If it's found in the result array
   cont[ vals[i] ]
     // Increment it
     ? cont[ vals[i] ]++
     // Else, set it to 1
     : cont[ vals[i] ] = 1 ;
}

可以使用while循环和变量赋值使之更加简单:
var vals = [1, 2, 2, 3, 3, 3, 4], // Values to cycle through
    cont = {},                    // Object to store results in
    indx = i = -1;                // Index and Counting variables

while ( indx = vals[ ++i ] )      // While a value exists for location i
  cont[ indx ]                    // Check to see if it's in the result object
    ? cont[ indx ]++              // If it is, increment it
    : cont[ indx ] = 1 ;          // If it is not, set it to 1

关于javascript - JS:获取相同值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621988/

相关文章:

javascript - JS 控制台错误显示 Extjs 试图对一个类发出 GET 请求,就好像它是一个文件一样

c# - 根据连续调用之间耗时优化批量大小

android - 寻找快速图像失真算法

javascript - 分页计算算法

c++ - C++如何检查给定输入是否存在于成对 vector 中?

php - 如何在PHP中创建个人哈希算法

javascript - Kendo-Grid:一列中包含两个字段

javascript - 输入仅允许 6 位数字,在逗号分隔后允许 Angular js 中的另外 6 位数字

javascript - d.stopPropagation 不是 bootstrap select-picker 的函数

javascript - lodash groupby 使用字符串键而不是数字