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].
Комментариев нет:
Отправить комментарий