我有这段代码:
var ar = [10,7,8,3,4,7,6];
function isin(n,a){
for (var i=0;i<a.length;i++){
if (a[i]== n) {
var b = true;
return b;
} else {
var c = false;
return c;
}
}
}
function unique(a){
var arr = [];
for (var i=0;i<a.length;i++){
if (!isin(a[i],arr)){
arr.push(a[i]);
}
}
return arr;
}
alert(unique(ar));
在这段代码中,我试图从原数组创建新的不重复的唯一数组。 但是我仍然得到了原始数组!我的错误在哪里?
new Set()
是内置的。但我感到Set()
受到阻碍,因为它很难进行谷歌搜索(SEO 的坏名称)。如果您的列表达到 1000 个项目,此答案可能会进行 100k-1mil 次比较操作(在indexOf()
内部完成的工作)。这是很多 CPU 要做一些可能是 O(n)的事情(每个项目几个操作)。 - yzorgunique()
的“inline”版本只是:[...new Set(list)]
。 - yzorg