Я пытаюсь .push() элементы массива в обоих массивах, которые не совпадают друг с другом, а затем присваиваю их новому пустому массиву, который я создал... но он просто выполняет итерацию и возвращает 60 повторяющихся элементов.

Что я делаю не так?

Примечание: я все еще изучаю этот предмет, поэтому извините, если то, что я делаю, глупо, ха-ха.

const bobsFollowers = ['James', 'Caleb', 'Rita', 'Samantha'];
const tinasFollowers = ['Maurice', 'Caleb', 'Samantha'];
const mutualFollowers = [];
const notMutualFollowers = [];

for (let i = 0; i < bobsFollowers.length; i++) {
  for (let j = 0; j < tinasFollowers.length; j++) {
    if (bobsFollowers[i] === tinasFollowers[j]) {
      mutualFollowers.push(tinasFollowers[j]);
    }
    for (let x = 0; x < tinasFollowers.length && bobsFollowers.length; x++) {
      if (bobsFollowers[i] !== tinasFollowers[j] && tinasFollowers[j] !== bobsFollowers[i])
    notMutualFollowers.push(bobsFollowers[i], tinasFollowers[j]);
    } 
  }
}

console.log(mutualFollowers);
console.log(notMutualFollowers);
0
Murilo Dias 16 Ноя 2022 в 19:21
1
x < tinasFollowers.length && bobsFollowers.length; торчит передо мной. Если длины больше 0, то они являются истинными, но не числовыми и поэтому несопоставимы с x.
 – 
mykaf
16 Ноя 2022 в 19:30
1
Разве вы не должны использовать x для чего-то во втором внутреннем цикле?
 – 
James
16 Ноя 2022 в 19:40

1 ответ

Я думаю, что это так. Ojs: Мне нравится определять константу, такую ​​как currentValue, просто для большего смысла и облегчения понимания.

for (let i = 0; i < bobsFollowers.length; i++) {
  const currentName = bobsFollowers[i];
  let isHaveSomeInArray = false;
    
  for (let j = 0; j < tinasFollowers.length; j++) {
    const currentComparation = tinasFollowers[j];

    if (currentName === currentComparation) {
      mutualFollowers.push(currentComparation);
      isHaveSomeInArray = true;
    }
  }

 if (!isHaveSomeInArray) {
     notMutualFollowers.push(currentName);
 }

}
0
Calebe Navarro 16 Ноя 2022 в 21:17