Вложенный массив не возвращает правильные данные - PullRequest
2 голосов
/ 11 июля 2020

Я пробую использовать вложенный массив, не могли бы вы мне помочь с l oop, код не оптимизирован, и мне нужно руководство. У меня есть 2 массива, я не получаю ожидаемых результатов.

let arr1 = ['a','b','c','d','e'];
let arr2 = ['b','e','f'];
var temp = arr2
  for(i =0; i< arr1.length; i++){
    for(j=0; j<arr2.length; j++){
      var flag = false;
      if(arr1[i] === arr2[j]){
        flag = true;
      }
      if(arr2.length -1 === j){
        if(flag == false){
          temp.push(arr1[i])
        }
        if( arr1.length - 1 == i){
              console.log(temp)
        }
      }
    }
  }

Я пытаюсь добиться того, чтобы из второго массива я выводил в этом формате

temp = ['b','e','f','a','c','d']

элементы, которых нет в arr1, должны быть помещены в элементы arr2. Прошу прощения за код новичка. Я еще учусь. Спасибо.

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Решение будет простым, если вы используете методы array.forEach и array.includes.

  1. Затем l oop над arr1 и проверьте, нет ли элемента в arr2, только тогда pu sh ит.

let arr1 = ['a','b','c','d','e'];
let arr2 = ['b','e','f'];



arr1.forEach(obj => {
 if(!arr2.includes(obj))
    arr2.push(obj);
})

console.log(arr2)
0 голосов
/ 11 июля 2020

let arr1 = ["a", "b", "c", "d", "e"];
let arr2 = ["b", "e", "f"];

// Method 1, using `reduce` and `includes`
const output1 = arr1.reduce(
  (acc, cur) => (!acc.includes(cur) && acc.push(cur), acc),
  arr2
);

// Method 2, using `reduce` and building object to handle duplicates. This will make look up easy
const output2 = Object.keys(
  arr2.concat(arr1).reduce((acc, cur) => Object.assign(acc, { [cur]: 1 }), {})
);

console.log(output1);
console.log(output2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...