我正在制作一个函数,该函数需要一个值数组并返回一个仅包含唯一值的数组。例如:
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;
}
不需要嵌套循环。您可以使用Array.prototype.indexOf
或Array.prototype.includes
方法检查结果中的可用值。
var strings = ["audi", "audi", "bmw", "bmw", "bmw", "bmw", "audi", "audi", "8-()"];
function unique(arr) {
var result = [];
result.push(arr[0]);
for (var i = 1; i < arr.length; i++) {
if (result.indexOf(arr[i]) === -1)
result.push(arr[i]);
}
return result;
}
console.log(unique(strings))
var strings = ["audi", "audi", "bmw", "bmw", "bmw", "bmw", "audi", "audi", "8-()"];
console.clear();
var result = strings.filter(function(s){ return this[s] ? false : (this[s] = true); }, Object.create(null))
console.log(result);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句