freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../diff-two-arrays/index.md

8.3 KiB
Raw Blame History

title localeTitle
Diff Two Arrays Diff Два массива

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

Проверьте два массива и верните новый массив, содержащий только элементы, которые не находятся ни в одном из исходных массивов.

Связанные ссылки

:speech_balloon: Подсказка: 1

Объедините список, чтобы упростить сравнение функций.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 2

Используйте фильтр, чтобы получить новый массив, вам нужно будет создать функцию обратного вызова.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 3

Лучший способ выполнения функции обратного вызова - проверить, не совпадает ли номер из нового объединенного массива в обоих исходных массивах и вернуть его.

попытаться решить проблему сейчас

Осторожно, спойлеры!

предупреждающий знак

Решение впереди!

:beginner: Решение базового кода (императивное решение):

    function diffArray(arr1, arr2) { 
      var newArr = []; 
 
      function onlyInFirst(first, second) { 
      // Looping through an array to find elements that don't exist in another array 
        for (var i=0;i<first.length;i++) { 
          if (second.indexOf(first[i]) === -1) { 
            // Pushing the elements unique to first to newArr 
            newArr.push(first[i]); 
          } 
        } 
      } 
 
      onlyInFirst(arr1, arr2); 
      onlyInFirst(arr2, arr1); 
 
      return newArr; 
    } 
 
    diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]); 

:rocket: Код запуска

Код Объяснение:

Прочитайте комментарии в коде.

Связанные ссылки

:sunflower: Решение промежуточного кода (декларативное решение):

    function diffArray(arr1, arr2) { 
      return arr1 
        .concat(arr2) 
        .filter( 
            item => !arr1.includes(item) || !arr2.includes(item) 
        ) 
    } 
 
    diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]); 

:rocket: Код запуска

Код Объяснение:

Объясните решение здесь и добавьте соответствующие ссылки

Связанные ссылки

:rotating_light: Расширенное решение кода (декларативное решение):

function diffArray(arr1, arr2) { 
    return arr1 
      .filter(el => !arr2.includes(el)) 
      .concat( 
        arr2.filter(el => !arr1.includes(el)) 
      ) 
 } 
 
 diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]); 

:rocket: Код запуска

Код Объяснение:

Объясните решение здесь и добавьте соответствующие ссылки

:rotating_light: Альтернативный вариант расширенного кода (декларативное решение):

function diffArray(arr1, arr2) { 
  return [ 
    ...diff(arr1, arr2), 
    ...diff(arr2, arr1) 
  ] 
 
  function diff(a, b) { 
    return a.filter(item => b.indexOf(item) === -1); 
  } 
 } 

Связанные ссылки

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Видеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.