Niklaus Wirth

Niklaus Wirth

Translate

Многомерный массив в массив с отбором элементов -(17) Steamroller

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


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

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