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