面试题 数组和对象混用的时候的扁平化

91 阅读1分钟

` 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));