在 JavaScript 中,以下代码将查找数组中的元素数量。假设数组中至少有一个元素
arr = ["jam", "beef", "cream", "jam"]
arr.sort();
var count = 1;
var results = "";
for (var i = 0; i < arr.length; i++)
{
if (arr[i] == arr[i+1])
{
count +=1;
}
else
{
results += arr[i] + " --> " + count + " times\n" ;
count=1;
}
}
是否可以在不使用 sort() 或不以任何方式改变数组的情况下做到这一点?我想必须重新创建数组,然后可以对新创建的数组进行排序,但我想知道不排序的最佳方法是什么。
是的,我是一名艺术家,而不是程序员,法官大人。
执行此操作的快速方法是使用new Set() object https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set.
集合很棒,我们应该更频繁地使用它们。它们速度很快,并受 Chrome、Firefox、Microsoft Edge 和 node.js 支持。
— Set 和 Object 哪个更快? https://github.com/anvaka/set-vs-object#benchmark-faster-way-to-count-unique-objects安德烈·卡什查
中的项目Set
将始终是唯一的,因为它只保留您输入的每个值的一个副本。这是一个使用此属性的函数:
function countUnique(iterable) {
return new Set(iterable).size;
}
console.log(countUnique('banana')); //=> 3
console.log(countUnique([5,6,5,6])); //=> 2
console.log(countUnique([window, document, window])); //=> 2
这可用于计算任何项目中的项目iterable https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of(包括数组、字符串、TypedArray 和参数对象)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)