Steamroller Wiki

November 5, 2021
Behind the Scenes

687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gifRemember to utilize Read-Search-Ask if you have caught. You will need to pair system and write your very own rule

Problem Explanation:

This problem appears quick nevertheless need to make sure to flatten any array, whatever the level which is what adds a bit of trouble to the issue.

Hint: 1

You need to check if a component is a selection or not.

attempt to resolve the difficulty today

Hint: 2

If you're working with a wide range, you will need flatten it by getting the worth inside of the variety. This implies when you have 4 after that in the place of returning [4] you'll want to return 4. If you have [4] then the same, you need the 4. You have access to it with arr[index1][index2] going a level deeper.

Hint: 3

You will definitely require recursion or any other path to take beyond two-level arrays to make the signal versatile and not hard-coded to your answers needed. Enjoy!

Spoiler Alert!

Solution ahead!

Basic Code Solution:

purpose steamrollArray(arr) { var flattenedArray = ; // Create function that adds an element if it is not an array. // If it is an array, then loops through it and uses recursion on that array. var flatten = function(arg) { if (!Array.isArray(arg)) { flattenedArray.push(arg); } else { for (var a in arg) { flatten(arg[a]); } } }; // Phone the big event for every single aspect in the variety arr.forEach(flatten); return flattenedArray; } // test here steamrollArray([1, [2], [3, [[4]]]]);

Run Code

Code Explanation:

  • Create an innovative new variable maintain flattened arrays.
  • Create a purpose that may add non range elements toward brand-new variable, and also for the people that are array it loops through them to obtain the element.
  • It can that making use of recursion, if element is an array after that call the event once again with a layer of variety much deeper to test in case it is a wide range or otherwise not. if it is not then press that non-array element on variable that gets came back. Usually, continue much deeper.
  • Invoke the event, the first occasion you can expect to always pass it a selection, so it always fall-in into isArray branch
  • Return the flattened range.

Intermediate Code Solution:

purpose steamrollArray(arr) { return arr.reduce(function (flat, toFlatten) { return flat.concat(Array.isArray(toFlatten) ? steamrollArray(toFlatten) : toFlatten); }, ); } // test right here steamrollArray([1, [2], [3, [[4]]]]);

  • Use decrease to concatenate each factor to the final factor
  • In the event that brand new factor is an Array it self call the big event recursively to flatten it before merging it along with the rest of outcome
  • Pass an empty range to reduce as initial price to be sure even the first element will undoubtedly be prepared
  • Credit visits


If you discovered this page of good use, you'll say thanks to the contributors by copying and pasting the following range in the main chat:

Thanks a lot @Rafase282 for the help with Algorithm: Steamroller


  • TRY NOT TO include solutions being similar to any existing solutions. If you think it is comparable but better, after that try to merge (or replace) the present similar solution.
  • Include an explanation of your solution.
  • Categorize the clear answer in just one of here categories — fundamental, Intermediate and Advanced.
  • Kindly add your username as long as you have got added any relevant primary contents. (CANNOT remove any existing usernames)
Share this Post