我需要找到数组中唯一元素的数量。
var myArray = [ 10, 10, 20, 20, 30, 30, 40, 40, 40, 40, 50, 50, 50, 50, 60 ];
我想要count = 6
(数组中唯一元素的数量)
并且,有没有办法在不迭代数组的情况下执行此操作? (我认为这将是最快的方式?)。
答案:我使用了.filter方法,如下所示。我的实际数组元素要复杂得多。我最终遍历我的数组并创建了一个新数组。新数组中的每个元素都是旧元素的.substr。然后,下面的.filter方法效果很好。感谢大家!!
答案 0 :(得分:6)
您需要保留一组已知值和辅助计数。您可以使用.reduce()
:
var count = myArray.reduce(function(values, v) {
if (!values.set[v]) {
values.set[v] = 1;
values.count++;
}
return values;
}, { set: {}, count: 0 }).count;
从一组空值和一个零开始,这将查看每个元素以查看它是否已添加到集合中。如果没有,则添加,计数递增。
答案 1 :(得分:4)
filter
和长度如何:
var len = myArray.filter(function(val, i, arr) {
return arr.indexOf(val) === i;
}).length;
答案 2 :(得分:1)
如果您恰巧使用lodash:
final_values[x][0] = consol_values[y][0];
答案 3 :(得分:0)
ES6提供了单行解决方案:
Array.from(new Set(myArray)).length