JSFiddle - React, Tailwind, and code Playground
by jackwanders
JavaScript
var flattenArray = function(arr) {
var res = Array.prototype.slice.call(arr, 0);
for (var i = 0; i < res.length;) {
if (res[i] instanceof Array) {
res.splice.apply(res, [i, 1].concat(res[i]));
} else {
i++;
}
}
return res;
}
console.log(flattenArray([1,2,[[3,4],5,[[[6]],7]]]));
/* collabedit contents
flattenArray([1,2,[[3,4],5,[[[6]],7]]])
=> [1,2,3,4,5,6,7]
// [1,2, [3,4]] ..
// arr = [[[3,4], 6]]
// [[3,4]]
// res = [1,2,[3,4]]
// res = [1, 2, 3, 4]
// [1,2].concat([3,4]) = [1,2,3,4]
// [1, 2, [3,4], 5, [[[6]],7]]
// [1, 2, 3, 4
//
function flattenIter(arr) {
var res = [];
while (arr) {
if (arr[0] instanceof Array) {
temp = [].concat(arr[0]); // arr[0] is [[3,4]]
res = res.concat(arr.shift());
} else {
res.push(arr.shift());
}
}
var foundArr = false;
do {
res.forEach(function(v, i) {
if (v instanceof Array) { // Array.isArray(arr)
res.splice.apply(res, [i, 1].concat(v)); // res.splice(i, 1, [3, 4]);
[1, 2, ]
foundArr = true;
} else {
res.push(v);
}
});
} while(foundArr)
return res;
}
function flattenArray(arr) {
var res = [];
arr.forEach(function(v) {
if (v instanceof Array) {
var flat = flattenArray(v);
res = res.concat(flat);
} else {
res.push(v);
}
});
return res;
}
*/