Niklaus Wirth

Niklaus Wirth

Translate

Sorted Union (9)

Sorted Union

Функция будет выбирать из всех массивов только представленные элементы, без повторов
Девятый день программы "#100 Days Of Code"

Создаем переменную - пустой массив. Сюда будем собирать не повторяющиеся цифры.

В переменную numArr добавим новый массив .Так, как arr является не массивом, а массивоподобным объектом, то у меня были сложности с решением этого задания. Помогло то, что "Метод slice() может использоваться для преобразования массивоподобных объектов / коллекций в новый массив Array. Вам просто нужно привязать метод к объекту. Псевдомассив arguments внутри функции как раз является примером «массивоподобного объекта»". Более подробно о этом методе с примером.

Создаем переменную comArr - это общий массив, который получается после reduce(). Обратите внимание, что функции работают в присвоенных значениях переменных.

Далее все просто. Так как у нас есть общий массив и пустой массив мы выбираем в него не повторяющиеся элементы (newArr.indexOf(comArr[i]) === -1), путем перебора массива циклом for.

В новый массив попадают только новые элементы, которых нет в массиве ( -1).



function uniteUnique(arr) {
  var newArr =[];
  var numArr = Array.prototype.slice.call(arguments, 0);
  
  var comArr = numArr.reduce(function(a, b){
    return a.concat(b);
  },[]);
 
for(var i = 0; i < comArr.length; i++){
  if(newArr.indexOf(comArr[i]) === -1){
      newArr.push(comArr[i]);
  }
}
  return newArr;
}

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


uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1])
return [1, 3, 2, 5, 4].

uniteUnique([1, 3, 2], [1, [5]], [2, [4]])
return [1, 3, 2, [5], [4]].

uniteUnique([1, 2, 3], [5, 2, 1])
return [1, 2, 3, 5].

uniteUnique([1, 2, 3], [5, 2, 1, 4], [2, 1], [6, 7, 8])
return [1, 2, 3, 5, 4, 6, 7, 8].


Комментариев нет:

Отправить комментарий