Создать Союз массивов, заданных в качестве параметров функции

1

Я хотел бы создать объединение массивов, заданное как параметры функции. Но у меня такая ошибка:

Javascript TypeError: Cannot read property 'length' of undefined

Это то, что я пытаюсь сделать:

function uniteUnique(arr) {

  var newArr = arguments[0];

  //Loop arguments
  for (let i = 0; i<arr.length-1; i++){
    console.log(arguments[i]);

    //Loop second argument values
    for (let y =0; y<arguments[i+1].length; y++){

      //Loop first argument values
      for (let z=0; z<arguments[i].length; z++){
        if (arguments[i+1][y] !== arguments[i][z]){
          newArr.push(arguments[i+1][y]);
        }

      }
    }
  }
  return arr;
}

uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

Выход, который я хочу, это [1, 3, 2, 5, 4], который является объединением уникальных значений из 3 массивов. Я получаю эту ошибку.

TypeError: Невозможно прочитать свойство 'length' неопределенного

  • 2
    Длина первого массива не имеет отношения к длине аргументов
Теги:

2 ответа

1

Из я понимаю, что вы хотите объединить три массива в один, удалив дубликаты. Тогда вам поможет следующий код.

var a = ["1","2","3"];
var b = ["3","4","5"];
var c = ["4","5","6"];

var d = a.concat(b).concat(c);
var set = new Set(d);

d = Array.from(set);

console.log(d);
1

Использование ES6 features

function unionArg(...args){
let newtab = []

//Destructuring of each arg which is an array
args.forEach(arg=>{
  newtab = [...arg,...newtab]
})

//Having all the items in a single array, we will keep only distincts elements
newtab = [...new Set(newtab)]

console.log("unique values:" + newtab)

}

unionArg([1,2,3,1],[0,4,1])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню