Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Удаление одинаковых эллементов из двух массивов JS

VIktor Ученик (55), на голосовании 1 год назад
Помогите пожалуйста, код работает не всегда корректно.function arrayDiff(a, b) {
 function arrayDiff(a, b) { 
for (let i = 0; i < a.length; i++) {
for (let k = 0; k < b.length; k++) {
if (a[i] == b[k]) {
a.splice(i, 1);
}
}
}
console.log(a);
return a;
}
arrayDiff([1, 2, 2, 2, 3], [2]); // должно быть [1,3]
arrayDiff([1, 2, 3], [1, 2]); //корректно
arrayDiff([1, 2, 2], []); //корректно
почему вот для 1ого случая возвращает [1,2,3], 2 эллемента удаляет,а 3 почему-то оставляет, помогите понять пожалалуйста, что нет
Дополнен 1 год назад
UPD:Решено, нужно всего лишь добавить в проверке i--,потому что если эллементы идут подряд, то он их просто пропускает, теперь все работает как надо)
Голосование за лучший ответ
Добрый день Просветленный (38040) 1 год назад
Тебе на стаковерфлоу нужно
VIktorУченик (55) 1 год назад
та нет,спасибо, я на таких сайтах не сижу,я натурал
eshth strhrtj Гуру (4081) 1 год назад
Эту задачу можно решить и в одну строчку кода.

Функция написанная ниже, может принимать любое количество аргументов, все элементы массива объединяются в один массив, с помощью метода concat, этот новый массив сохраняется в структуре данных Set, особенность этой структуры данных в том что она может храниться только уникальные значения, затем структура Set превращается в обычный тип данных Array при помощи Array.from.

VIktorУченик (55) 1 год назад
круто конечно, но я вроде спрашивал немного другое
VIktorУченик (55) 1 год назад
и да ваш код не решает эту задачу)
eshth strhrtj Гуру (4081) S1ayer, Ну ты в своем вопросе не указал что конкретно хочешь получить
Похожие вопросы