美文网首页
JS 数组扁平化的5种方式

JS 数组扁平化的5种方式

作者: kevin5979 | 来源:发表于2021-02-06 08:26 被阅读0次

什么是数组扁平化

  • 数组扁平化是指将一个多维数组变为一维数组
数据准备
let arr = [[null], "kevin", 18, [{}, { a: "223", b: "666" }], [[1, {}, [[[1, 2, 3]], 4, 5, 6]]], 1, 2, 3];
// 是数组
function isArray(arr) {
  return Object.prototype.toString.call(arr) == '[object Array]'
}
// 是对象
function isObject(obj) {
  return Object.prototype.toString.call(obj) == '[object Object]'
}

实现方法一

function flatten(arr=[]) {
  let resArr = []
  let len = arr.length
  for (let i = 0; i < len; i++) {
    if (isArray(arr[i])) {
      resArr = resArr.concat(flatten(arr[i]))
    } else {
      resArr.push(arr[i])
    }
  }
  return resArr
}
console.log(flatten(arr))

实现方法二

Array.prototype.flatten = function () {
  let resArr = []
  this.forEach(function (item) {
    Object.prototype.toString.call(item) == '[object Array]' ? resArr = resArr.concat(item.flatten()) : resArr.push(item)
  })
  return resArr
}
console.log(arr.flatten())

实现方法三

function flatten(arr=[]) {
  return arr.reduce(function (prev, next) {
    return Object.prototype.toString.call(next) == '[object Array]'? prev.concat(flatten(next)) : prev.concat(next)
  }, [])
}
console.log(flatten(arr))

实现方法四

const flatten = arr => arr.reduce((prev,next) => Object.prototype.toString.call(next) == '[object Array]'? prev.concat(flatten(next)) : prev.concat(next),[])
    console.log(flatten(arr))

实现方法五

  • 使用 es6 的 flat(n) 方法, n 表示层数, Infinity表示完全扁平
console.log(arr.flat(Infinity));

image.png

前面四种方法,核心也只有一个:
遍历数组arr,若arr[i]为数组则递归遍历,直至arr[i]不为数组然后与之前的结果concat。

END

相关文章

  • 5种方式实现数组扁平化

    5种方式实现数组扁平化 数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 实现 1. reduce 遍历数...

  • js实现数组扁平化

    js实现数组扁平化 数组的扁平化,就是将一个嵌套多层的数组array(嵌套可以是任何层数)转换为只有一层的额数组。...

  • js数组与对象常用操作方法

    一、Js相关数组操作 数组去除相同的 数组添加数数据 数组反转 打乱数组排序 取数组的前几个 数组扁平化 遍历对象...

  • 封装常用数组操作函数

    1. 数组扁平化 方法一 : 递归迭代数组 方法二 : 通过js原生 falt方法展开数组 方法三 通过正则...

  • JavaScript编码能力

    1.多种方式实现数组去重、扁平化、对比优缺点 数组去重 扁平化 2.多种方式实现深拷贝、对比优缺点 3.手写函数柯...

  • JS 数组扁平化的5种方式

    什么是数组扁平化 数组扁平化是指将一个多维数组变为一维数组 数据准备 实现方法一 实现方法二 实现方法三 实现方法...

  • 数组的去重和数组中对象的去重

    数组中对象去重 方式1 jq方式 方式2 原生js方式 普通数组的去重 方式1 普通的数组去重js 方式2 Se...

  • 『JavaScript专题』之数组扁平化

    JavaScript专题之数组扁平化 扁平化 数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何...

  • js数组扁平化

    扁平化 数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。 递归 e...

  • js数组扁平化

    1、 利用apply和concat转换 2、reduce 3、多维数组递归降维

网友评论

      本文标题:JS 数组扁平化的5种方式

      本文链接:https://www.haomeiwen.com/subject/tgbutltx.html