这是我写的代码
function arrayContains(value,array){
var result = false;
for(i=0;i<array.length;i++){
if(array[i]==value){
result = true;
}
}
return result;
}
function someFunction(array2){
var arr = [];
for(i = 0 ; i<array2.length; i++){
var val = array2[i];
if(!arrayContains(val,arr)){
arr.push(val);
}
}
console.log(arr);
}
但是,运行此代码会卡住浏览器。这段代码有什么问题?
最佳答案
你忘记了var
两次:
for(i=0;i<array.length;i++){
...
for(i = 0 ; i<array2.length; i++){
因此,所有循环都使用相同的全局变量i
。当您调用arrayContains
时,您重置了someFunction
中使用的计数器,这导致了无限循环。
请小心在所有循环中添加 var
声明:
for(var i=0; i<array.length; i++){
<小时/>
旁注:您不必迭代 arrayContains
中的整个数组,您可以这样做
function arrayContains(value, array){
for(var i=0; i<array.length; i++){
if(array[i]==value) return true;
}
return false;
}
关于javascript - 如果值包含则插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825113/