Я пытаюсь найти решение для симметричных с помощью javascript, который выполняет следующие Цели:
- принимает неопределенное количество массивов в качестве аргументов
- сохраняет исходный порядок чисел в массивах
- не удаляет дубликаты чисел в одиночных массивах
- удаляет дубликаты, встречающиеся в массивах
Таким образом, например, если вход ([1, 1, 2, 6], [2, 3, 5], [2, 3, 4]), решение было бы [1, 1, 6, 5, 4].
Я пытаюсь решить это как вызов, заданный онлайн сообщества кодирования. Точные инструкции задачи состояние,
Создайте функцию, которая принимает два или более массива и возвращает массив от симметричной разности предоставленных массивов.
Математический термин "симметричная разница" относится к элементам в два набора, которые находятся в первом или втором наборе, но не в обоих.
Хотя мое решение ниже находит числа, которые уникальный для каждого массива, он устраняет все числа, происходящие более одного раза и не сохраняет порядок номеров.
Мой вопрос очень близок к тому, который был задан для нахождения симметричных разностей/уникальных элементов в нескольких массивах в javascript. Однако решение не сохраняет исходный порядок чисел и не сохраняет дубликаты уникальных чисел, встречающихся в одиночных массивах.
function sym(args){
var arr = [];
var result = [];
var units;
var index = {};
for(var i in arguments){
units = arguments[i];
for(var j = 0; j < units.length; j++){
arr.push(units[j]);
}
}
arr.forEach(function(a){
if(!index[a]){
index[a] = 0;
}
index[a]++;
});
for(var l in index){
if(index[l] === 1){
result.push(+l);
}
}
return result;
}
symsym([1, 1, 2, 6], [2, 3, 5], [2, 3, 4]); // => Desired answer: [1, 1, 6. 5. 4]