多维数组扁平化处理

323 阅读1分钟

在对多维数组进行扁平化处理时,所涉及到的js逻辑相对复杂,所以在这做个笔记,方便以后用到时查阅,以下是相关代码:

//多维数组,二级或二级以上
let list = [
  {
    id: 1,
    items: [
      {
        id: 2,
        items: [
          {
            id: 3,
            items: []
          },
          {
            id: 4,
            items: []
          }
        ]
      },
      {
        id: 5,
        items: []
      }
    ]
  },
  {
    id: 6,
    items: []
  }
]

当我们需要对这个多维数组变成一维数组时我们可以定义一个方法:

function flatten (array) {  //传入需要处理的数组
  return [].concat(...array.map(item => [].concat(item, ...flatten(item.items))))
}

总结:该方法主要是利用数组遍历api:map,通过map遍历数组每一项,对每个item利用数组合并方法concat合并成一个新的数组,如果存在三级或以上的数组,就调用自身来递归,最终实现扁平化处理,下面是处理结果。