【问题标题】:how can i iterate over a list with the same list [closed]我如何遍历具有相同列表的列表[关闭]
【发布时间】:2021-06-07 03:26:51
【问题描述】:

我是一名初级程序员,但在迭代数组时遇到了问题。我想在它的索引上迭代相同的列表。也就是说,我想在 [i] 上迭代 [j]。让 [j] 完成运行并增加 [i] 我想在它的索引上迭代相同的列表。也就是说,我想在 [i] 上迭代 [j]。让 [j] 完成并增加 [i] 并再次执行相同的操作,直到没有其他要经过的为止。

for (let i = 0; i < results.length; i++) {
  for (let j = i+1; j < results.length; j++) {
    if (results[i].Email == results[j].Email){
      // delete the item or items from the array
    }
  
  }
  
}

有问题的数组是这个,我想检查电子邮件是否重复删除:

results = [
{Id: 1, Name: "Some", Lastname: "One", Email: "someone@email.com"}, 
{Id: 2, Name: "Some", Lastname: "One", Email: "someone@email.com"}, 
{Id: 3, Name: "Some", Lastname: "One", Email: "someother@email.com"}
]

【问题讨论】:

  • 您需要显示您想要执行此操作的列表。否则很难告诉你。
  • 请添加一个示例数组和想要的结果。
  • 如果我理解正确的话。你所展示的应该做你想做的。但从 j =0 而不是 i+1 开始。
  • 再次阅读您的问题几次:您尝试实现的目标似乎已经在您的示例代码中执行。那么你的问题到底是什么?
  • @KunwarSagar 就是这样,但我只从列表中删除重复记录,而不是所有重复记录。

标签: javascript loops for-loop duplicates


【解决方案1】:

你可以这样做:

for (let i = 0; i < results.length; i++) {
  for (let j = 0; j < results.length; j++) {
    // this will leave just one entry with the same email
    if (i != j && results[i].Email == results[j].Email){
      results.splice(j, 1);
      j--;
      i--;
    }
  }
}

【讨论】:

    【解决方案2】:

    通过删除数组中的一项,可以改变数组的长度和索引的位置。

    为了克服这个问题,您可以使用嵌套循环从末尾进行迭代,并检查较低索引中是否存在相同的电子邮件,如果存在则拼接该项目并继续。

    const
        data = [{ Id: 1, Name: "Some", Lastname: "One", Email: "someone@email.com" }, { Id: 2, Name: "Some", Lastname: "One", Email: "someone@email.com" }, { Id: 3, Name: "Some", Lastname: "One", Email: "someother@email.com" }];
        
    let i = data.length;
    
    while (i--) {
        let j = i;
        while (j--) {
            if (data[i].Email === data[j].Email) {
                data.splice(i, 1);
                break;
            }
        }
    }
    
    console.log(data);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    您可以将对象作为已查看电子邮件的参考,而不是使用嵌套循环来删除重复项。

    const
        data = [{ Id: 1, Name: "Some", Lastname: "One", Email: "someone@email.com" }, { Id: 2, Name: "Some", Lastname: "One", Email: "someone@email.com" }, { Id: 3, Name: "Some", Lastname: "One", Email: "someother@email.com" }],
        seenEmails = {};
        
    let i = 0;
    
    while (i < data.length) {
        if (seenEmails[data[i].Email]) {
            data.splice(i, 1);
            continue;
        }
        seenEmails[data[i].Email] = true;
        i++;
    }
    
    console.log(data);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      猜你喜欢
      • 2019-12-30
      • 2017-12-10
      • 2012-01-24
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      相关资源
      最近更新 更多