面试题:js拍平多维数组

在面试中我们常常会被问到如何用原生js实现拍平多维数组

let array = [1, [2], [3, [4, [5]]]]
function flat(arr) {
    //在此处实现代码
}
console.log(flat(array)) //[1, 2, 3, 4, 5]

原始方法:

let array = [1, [2], [3, [4, [5]]]]
function flat() {
  var flatArr = []
  return function flatten(arr) {
    for (let index = 0; index < arr.length; index++) {
      Array.isArray(arr[index])
        ? flatten(arr[index])
        : flatArr.push(arr[index])
    }
    return flatArr
  }
}
console.log(flat()(array))

toString方法:

let array = [1, [2], [3, [4, [5]]]]
function flat(arr) {
  return arr.toString().split(',').map(val => +val)
}
console.log(flat(array))

Reduce方法:

let array = [1, [2], [3, [4, [5]]]]
function flat(arr) {
  return arr.reduce((pre, value) => {
    return Array.isArray(value) ? [...pre, ...flat(value)] : [...pre, value]
  }, [])
}
console.log(flat(array))

猜你喜欢

转载自blog.csdn.net/ll18781132750/article/details/81128557