8.3 KiB
title | localeTitle |
---|---|
Diff Two Arrays | Diff Два массива |
Не забудьте использовать Read-Search-Ask
если вы застряли. Попробуйте подключить программу и напишите свой собственный код
Проблема Объяснение:
Проверьте два массива и верните новый массив, содержащий только элементы, которые не находятся ни в одном из исходных массивов.
Связанные ссылки
- для Loop (Devdocs)
- Array.prototype.includes (Devdocs)
- Array.prototype.filter (Devdocs)
- Array.prototype.concat (Devdocs)
Подсказка: 1
Объедините список, чтобы упростить сравнение функций.
попытаться решить проблему сейчас
Подсказка: 2
Используйте фильтр, чтобы получить новый массив, вам нужно будет создать функцию обратного вызова.
попытаться решить проблему сейчас
Подсказка: 3
Лучший способ выполнения функции обратного вызова - проверить, не совпадает ли номер из нового объединенного массива в обоих исходных массивах и вернуть его.
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода (императивное решение):
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]);
Код Объяснение:
Прочитайте комментарии в коде.
Связанные ссылки
Решение промежуточного кода (декларативное решение):
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]);
Код Объяснение:
Объясните решение здесь и добавьте соответствующие ссылки
Связанные ссылки
- Array.prototype.concat (Devdocs)
- Array.prototype.filter (Devdocs)
- Array.prototype.includes (Devdocs)
Расширенное решение кода (декларативное решение):
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]);
Код Объяснение:
Объясните решение здесь и добавьте соответствующие ссылки
Альтернативный вариант расширенного кода (декларативное решение):
function diffArray(arr1, arr2) {
return [
...diff(arr1, arr2),
...diff(arr2, arr1)
]
function diff(a, b) {
return a.filter(item => b.indexOf(item) === -1);
}
}
Связанные ссылки
- Array.prototype.includes (Devdocs)
- Array.prototype.filter (Devdocs)
- Array.prototype.concat (Devdocs)
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
- НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .
- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( НЕ удаляйте существующие имена пользователей )
Видеть
Wiki Challenge Solution Template
дляWiki Challenge Solution Template
для справки.