数据扁平化的几种方式

1.使用es6中提供的flat()方法实现

  <script>
    let arr = [
      [1, 2, 2],
      [3, 4, 5, 5],
      [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10
    ]
    //flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
    arr = arr.flat(Infinity)
    console.log(arr);
  </script>

2.利用转化为字符串的思想

(1)toString()

    let arr = [
      [1, 2, 2],
      [3, 4, 5, 5],
      [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10
    ]
    arr = arr.toString().split(',').map(item => parseFloat(item))
    console.log(arr);

(2)JSON.stringify()

    let arr = [
      [1, 2, 2],
      [3, 4, 5, 5],
      [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10
    ]
    arr = JSON.stringify(arr).replace(/(\[|\])/g,'').split(',').map(item => parseFloat(item))
    console.log(arr);

3.循环验证是否为数组

    let arr = [
      [1, 2, 2],
      [3, 4, 5, 5],
      [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10
    ]
    // 循环验证是否为数组
    // some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值
    while(arr.some(item => Array.isArray(item))) {
      // concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组
      arr = [].concat(...arr)
    }
    console.log(arr);

猜你喜欢

转载自blog.csdn.net/gkx19898993699/article/details/128255646