• js将多维数组转换为一维数组


    将多维数组转换为一维数组

    解决方案有很多,以下来一一例举

    方法一:使用数组的join()

    let arr = [1, 2, 3, 4, 5, [6, 7, 8, [9, 10, 11, 12, [13, 14, 15, 16]]]]

    console.log(arr.join()) // 输出为:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

    let newArr = arr.join().split(',')

    console.log(newArr) // 输出为:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"]

    方法二:使用toString()方法

    let arr = [1, 2, 3, 4, 5, [6, 7, 8, [9, 10, 11, 12, [13, 14, 15, 16]]]]

    console.log(arr.toString()) // 输出为:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

    let newArr = arr.toString().split(',')

    console.log(newArr) // 输出为:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"]

    方法三: 使用空字符串的方法

    let arr = [1, 2, 3, 4, 5, [6, 7, 8, [9, 10, 11, 12, [13, 14, 15, 16]]]]

    console.log(arr+ ''// 输出为:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

    let newArr = (arr+ '').split(',')

    console.log(newArr) // 输出为:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"]

    方法四:递归调用

    let arr = [1, 2, 3, 4, 5, [6, 7, 8, [9, 10, 11, 12, [13, 14, 15, 16]]]]

    let newArr = [] // 存放转化后的一维数组

    function arrConversion (arr) {

      for (let i = 0; i < arr.length; i++) {

        if (Array.isArray(arr[i])) {

          arrConversion(arr[i])

        } else {

          newArr.push(arr[i])

        }

      }

    }

    arrConversion(arr)

    console.log(newArr) // 输出为:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"]

    es6写法

    const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v)));

    deepFlatten([1, [2], [[3], 4], 5]); // [1,2,3,4,5]

    方法五:flat()

    console.log([1 ,[2, 3]].flat()); // [1, 2, 3]

    // 指定转换的嵌套层数

    console.log([1, [2, [3, [4, 5]]]].flat(2)); // [1, 2, 3, [4, 5]]

    // 不管嵌套多少层

    console.log([1, [2, [3, [4, 5]]]].flat(Infinity)); // [1, 2, 3, 4, 5]

    // 自动跳过空位

    console.log([1, [2, , 3]].flat()); // [1, 2, 3] 

    方法六: 正则

    let ary = [1, [2, [3, [4, 5]]], 6];

    let str = JSON.stringify(ary);

    let result = str.replace(/(\[|\])/g, '').split(',');

    console.log(result)

    方法七: 扩展运算符

    let ary = [1, [2, [3, [4, 5]]], 6];// -> [1, 2, 3, 4, 5, 6]

    //只要有一个元素有数组,那么循环继续

    while (ary.some(Array.isArray())) {

      ary = [].concat(...ary);

    }

  • 相关阅读:
    webpackdevserver 找不到目录
    Sublime text 实用插件 包推荐
    github for windows 安装
    很有创意的广告
    介绍一个软件SnippetCompiler
    Nodepad++ ftp github for windows组合开发php
    c#读取写入文本文件
    什么是临时,什么是长久,什么是永久?
    c#操作xml(读,写)
    php连接mssql数据库的几种方式
  • 原文地址:https://www.cnblogs.com/zhilu/p/13803724.html
Copyright © 2020-2023  润新知