我有一个包含 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/