I have implemented a solution to flatten an array of multiple levels in Javascript. I am just a newbie so forgive any mistakes. Could someone give me any tips to improve the code?
function streamrollArray(arr) {
var copyArr = arr;
var to_return = [];
while (true) {
if (copyArr.length <= 0) { return to_return; }
var head = copyArr[0];
to_return = to_return.concat(getValues(head));
//Chop head off since we have got all the values from it.
copyArr = copyArr.splice(1);
}
}
function getValues(arr) {
var copyArr = arr;
var to_return = [];
if (!Array.isArray(arr)) {
return arr;
}
while (true) {
//A head can contain multiples arrays inside it.
if (copyArr.length <= 0) { return to_return; }
var head = copyArr[0];
to_return = to_return.concat(getHead(head));
copyArr = copyArr.slice(1);
}
}
function getHead(head) {
//If its an array we break into it getting the head and keep checking.
while (Array.isArray(head)) {
head = head[0];
}
return head;
}