javascript - 将数组转换为新数组(计算出现次数)

标签 javascript arrays

我有一个包含 n 个项目的数组

var arr1 = [2, 0, 0, 1, 1, 2, 0, 0, 0, 2, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 2, 2, 0, 0, 2, 2, 1, 2, 2, 0, 1, 2, 2, 1, 1, 0, 1, 1, 0, 2, 1, 0, 0, 0, 2, 1, 1, 1, 2, 2, 1, 0, 0, 0, 2, 2, 2, 2, 2, 1, 0, 2, 2, 0, 2, 2, 0, 2, 0, 0, 1, 2, 1, 0, 2, 1, 0, 1, 2, 0, 2, 0, 0, 0, 1, 2, 1, 0, 2, 0, 0, 0, 1, 2, 1, 1, 1, 1]

如你所见,数组只有 i 个不同的值 (v) (0,1,2),i = 3案例

我想要的是以这样的数组结尾。

var arr2 = [23, 45, 64]

arr2 数组的长度应该对应于i 值应该是每个值出现的次数(v)

我正在做各种循环和条件,但正在寻找一个直接的解决方案。 到目前为止我的部分http://jsfiddle.net/fiddlebjoern/aSsjy/2/

可能涉及 jQuery 和/或下划线。

最佳答案

简单易行!输入的值成为输出的键;当你遇到值时,你在这些键上积累:

var arr1 = [0,0,0,1,2,3,4,3,2,3,4,3,4,3,5];
var arr2 = [];

for (var i = 0; i < arr1.length; i++) {
   var n = arr1[i];
   if (arr2[n] != undefined)
       arr2[n]++;
   else
       arr2[n] = 1;
}

console.log(arr2);  // Output: [3, 1, 2, 5, 3, 1]

Live demo .

关于javascript - 将数组转换为新数组(计算出现次数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9616929/

相关文章:

java - 使用 Class.forname 时发生 ClassNotFoundException

c - 如何增加每个循环中具有全局指针的数组大小

java - 迭代 int 数组

javascript - 如何使用 javascript 将 url 地址字符串作为 url 的参数传递?

javascript - 是否可以通过javascript使一次点击触发两个或更多事件?

javascript - 从 Lambda 调用 Rest API(JS;Web 控制台)

javascript - 在特定页面上隐藏 div

java - 查找两个数组的并集

java - H2:getArray 仅返回一个元素

javascript - 使用 jqGrid 更改添加表单的 CSS