Многомерный массив в массив с отбором элементов - 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].
Комментариев нет:
Отправить комментарий