Многомерный массив в массив с отбором элементов - Steamroller
17 день программы "#100 Days Of Code"
Пробовал решить через reduce(). Ниже приведу. Но мне кажется что правильнее так. Метод forEech() нам предоставит доступ к элементу любой степени вложенности. Остается просто проверить и выбрать подходящий. В нашем случае - НЕ являющийся массивом элемент. Иначе продолжим переборю
function steamrollArray(arr) { var newArray = []; myFunction(arr); function myFunction(arr){ arr.forEach(function(subarray){ if(!Array.isArray(subarray)) { newArray.push(subarray); } else { myFunction(subarray); } }); } return newArray; } steamrollArray([1, [2], [3, [[4]]]]);
Можно решить и так!
function steamrollArray(arr) { var newArray = arr.reduce(function(a, b) { return a.concat(b); }, []); var myArr = newArray.join(''); return myArr.split(''); } steamrollArray([1, [2], [3, [[4]]]]);
Ответы:
steamrollArray([[["a"]], [["b"]]])
return ["a", "b"].
steamrollArray([1, [2], [3, [[4]]]])
return [1, 2, 3, 4].
steamrollArray([1, [], [3, [[4]]]])
return [1, 3, 4].
steamrollArray([1, {}, [3, [[4]]]])
return [1, {}, 3, 4].
Комментариев нет:
Отправить комментарий