首页 > 解决方案 > for循环递增是减少给定值而不是递增它

问题描述

嘿,我是 JS 新手,我一直在玩它。今天我被这个问题困住了,请帮助我理解我做错了什么。

我知道代码看起来很混乱,但我想在这里做的是我想从 idList 中删除那些在 onlinelike 中找不到的项目。但我发现出了点问题,本来打算增加我喜欢 0,1,2 等的 for 循环反而倒计时了。

请帮忙。

const idList = ['group1 1', 'group2 2', 'group3 3', 'group1 4'];

const onlinelike = ['group1 1', 'group3 2', 'group2 3', 'group1 4'];

var RemovedList = [];

if (idList != null) {
  idList.forEach(item => {
    if (onlinelike != null) {
      for (i = 0; i < onlinelike.length; i++) {
        if (onlinelike[i].split(' ')[0] === item.split(' ')[0]) {
          if (onlinelike[i].split(' ')[1] !== item.split(' ')[1]) {
            console.log(item, 'to to be removed')
            console.log(i);
          }
        }
      }
    }
  });
}

同样,当从中删除 if 语句时,它开始表现得更加奇怪,例如 0,3,2,1,0,3

const idList = ['group1 1', 'group2 2', 'group3 3', 'group1 4'];

const onlinelike = ['group1 1', 'group3 2', 'group2 3', 'group1 4'];

var RemovedList = [];

if (idList != null) {
  idList.forEach(item => {
    if (onlinelike != null) {
      for (i = 0; i < onlinelike.length; i++) {
        if (onlinelike[i].split(' ')[0] === item.split(' ')[0]) {
          console.log(item, 'to to be removed')
          console.log(i);
        }
      }
    }
  });
}

标签: javascriptarraysfor-loop

解决方案


使用.filter.includes()

const idList = ['group1 1', 'group2 2', 'group3 3', 'group1 4'];
const onlinelike = ['group1 1', 'group3 2', 'group2 3', 'group1 4'];

var RemovedList = idList.filter(item=> !onlinelike.includes(item))

console.log(RemovedList)


推荐阅读