我正在编写一个函数,它接受一个值的数组并返回只包含唯一值的数组。例如:
var strings = ["audi", "audi", "bmw", "bmw","bmw","bmw","audi","audi", "8-()"];
结果应该是:
alert( unique(strings) ); // audi, bmw, 8-()
我不明白为什么我的函数进入了无限循环,有人能帮忙吗? 这是函数:
function unique(arr) {
var result = [];
result.push(arr[0]);
for (var i = 1; i < arr.length; i++) {
for (var j = 0; j < result.length; j++) {
if (result[j] != arr[i]) {
result.push(arr[i]);
}
}
}
return result;
}
result.push(arr[i])
会使result.length
增加1。 - Pointyconsole.log()
语句吗? - nnnnnnarr[i]
项与result
中的第一个值不相等,则将其添加到result
中,即使它可能等于result
中后面的某个值。如果它不等于任何现有的result
值,则会添加多次... - nnnnnn