数组嵌套和条件

时间:2021-07-27 18:16:06

标签: javascript arrays

我正在学习 javascript 并尝试解决一些练习。我喜欢的人希望我从数组中删除所有重复项。 到目前为止,这是我的代码:

const removeDuplicateds = (arr=undefined)=>{
let count=0;
for (let i=0; i <arr.length ; i++){
    for (let j=1; j<arr.length; j++){
        if (arr[i]=== arr[j]){
            count= count +1;
        }
    }
}
return console.log(count);

removeDuplicateds([1,2,3,4,1,1]);

所以我想通过使用计数器来验证这个结构(实际的做法是使用 arr.splice(j,1) 而不是 count=count+1)。所以它返回了 12 次,这意味着它在 if 条件中输入了 12 次,这是不可能的,因为应该只有 3 次(arr 中的三个 1)。对正在发生的事情有什么想法吗? 谢谢!

3 个答案:

答案 0 :(得分:1)

尽管此解决方案不是最有效的解决方案,但修复代码的最简单方法是

let count = 0;
for (let i = 0; i < arr.length - 1; i++){
    for (let j = i + 1; j < arr.length; j++){
        if (arr[i] === arr[j]){
            count++;
       }
    }
}

您的原始代码发现太多重复项,因为尽管 (1, 3) 和 (3, 1) 对是相同的,但您的代码将它们视为不同。

答案 1 :(得分:0)

问题在于逻辑。您正在执行第一个循环 6 次,而第二个循环在前一个循环的每次迭代中执行 5 次。将会有多个周期进入 if 在多个机会中 尝试以下操作:

 const removeDuplicateds = (arr=undefined)=>{
    let result = arr.filter((item,index)=>{
      return arr.indexOf(item) === index;
    })
    return result;
 }

答案 2 :(得分:-1)

你也使用 set。

let arr = [1,2,3,4,1,1];

const removeDuplicated = (arr) => {
   const set = new Set(arr)
   return Array.from(set)
}

相关问题