首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组嵌套的and条件

数组嵌套的and条件
EN

Stack Overflow用户
提问于 2021-07-28 02:16:06
回答 3查看 51关注 0票数 0

我正在学习javascript并尝试解决一些练习。我所使用的方法是让我从数组中删除所有重复项。到目前为止,这是我的代码:

代码语言: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中的3个1)。知道发生了什么事吗?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-27 18:20:30

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2021-07-28 02:43:39

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

代码语言:javascript
复制
 const removeDuplicateds = (arr=undefined)=>{
    let result = arr.filter((item,index)=>{
      return arr.indexOf(item) === index;
    })
    return result;
 }
票数 0
EN

Stack Overflow用户

发布于 2021-07-28 02:26:03

您还可以使用set。

代码语言:javascript
复制
let arr = [1,2,3,4,1,1];

const removeDuplicated = (arr) => {
   const set = new Set(arr)
   return Array.from(set)
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68549952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档