You can write a walker function:
function walkLeaves(arr, fn)
{
for (var i = 0; i < arr.length; ++i) {
if (typeof arr[i] == 'object' && arr[i].length) { // simple array check
walkLeaves(arr[i], fn);
} else {
fn(arr[i], i); // only collect leaves
}
}
}
And then use that to build the final array:
var final = [];
walkLeaves(arr, function(item, index) {
final.push(item);
});