` var arr = [ [1, new Number(10), 2], { a: 3, b: [4, 7, 8] }, [6, 7, 8, 9, [11, 12, [12, 13, [14]]]] ];
function flat(arr) {
let newArr = [];
if (Array.isArray(arr)) {
arr.forEach((item,index) => {
newArr.push(...flat(item))
})
} else if(arr instanceof Object) {
if(Object.prototype.toString.call(arr) === '[object Number]'){
newArr.push(arr.valueOf())
} else {
newArr.push(...flat(Object.values(arr)))
}
} else {
newArr.push(arr)
}
return newArr
}
console.log(flat(arr));