gpt4 book ai didi

javascript - 将不重复的数字添加到数组中

转载 作者:行者123 更新时间:2023-12-03 03:42:52 26 4
gpt4 key购买 nike

我用javaScript编写了一个函数,检查数字是否是第一次出现,如果是,则将其添加到数组中。由于某种原因,第一个数字总是重复,例如:

如果我们通过 [1,1,1,2,3,3,4,5]它将打印出 [1,1,2,3,4,5] 而不是 [1,2,3,4,5]

谁能告诉我我错过了什么?预先感谢您。

var numbers = [1,1,1,1,1,2,3,4,4,4,5,5,6,6,6,8];
function eliminateDup(arr){

var myArr = [];

for(var i = 0;i<arr.length;i++){

if(!myArr[arr[i]]){

myArr.push(arr[i]);
}
}
return myArr;
}
console.log(eliminateDup(numbers));

最佳答案

这种比较没有意义:

if(!myArr[arr[i]]){

仅当 !myArr[arr[i]] 可以转换为 true 时才为 true
您在目标数组 myArr 中得到两次 1,因为 arr[0]arr[1] 都等于1myArr 在执行条件语句时的前两次迭代的 1 索引处有一个未定义的元素。

<小时/>

第一次迭代

i = 0 
arr[0] = 1
myArr[1] = undefined

因此 if(!myArr[1])true
您添加 1

第二次迭代

i = 1     
arr[1] = 1
myArr[0] = 1 // now valued but not used in the test
myArr[1] = undefined;

因此 if(!myArr[1])true
您仍然添加 1

第三次迭代

i = 2
arr[2] = 1
myArr[0] = 1
myArr[1] = 1

所以 if(!myArr[1])false
没有添加任何内容。

<小时/>

您应该先检查当前值是否不包含在目标数组中,然后再将其添加到目标数组中:

if(myArr.indexOf(arr[i])==-1){
myArr.push(arr[i]);
}

关于javascript - 将不重复的数字添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45535647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com