У меня есть массив массивов, который должен стать 1 массивом уникальных значений.
[1, 3, 2], [5, 2, 1, 4], [2, 1]
Я хочу использовать Reduce / Map для решения проблемы, но, похоже, она не работает,Я уже решил проблему с помощью вложенных циклов следующим образом:
function uniteUnique(arr) {
var args = Array.from(arguments);
var arr = [];
for (var i = 0; i < args.length; i++) {
for (var j = 0; j < args[i].length; j++) {
if (!arr.includes(args[i][j])) {
arr.push(args[i][j]);
}
}
}
return arr;
}
Теперь я попытался решить эту проблему с помощью метода limit / map, но не получил правильного решения, например:
function uniteUnique(arr) {
var args = Array.from(arguments);
return args.reduce(
(arr, a) => a.map(n => (!arr.includes(n) ? arr.push(n) : n)),
[]
);
}
console.log(uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]));
Я также пытался решить с помощью Reduce / Map, используя более старый синтаксис, например так:
function uniteUnique(arr) {
var args = Array.from(arguments);
return args.reduce(function(arr, a) {
return a.map(function(n) {
if (!arr.includes(n)) {
return arr.push(n);
} else {
return n;
}
});
});
}
Я предполагаю, что я что-то не так делаю с операторами возврата в функциях обратного вызова,Любая помощь будет оценена, спасибо.