IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 多维数组转成一维数组 -> 正文阅读

[游戏开发]多维数组转成一维数组

1.Array.prototype.flat()

数组原型链上有flat()方法,里面的参数如果是Infinity就意味着不管你嵌套了多少个数组都能转为一维。如果不写参数,就默认减少最外的多维数组,可以将参数写成数字,意味着减少多少层[],建议自己控制台实操体验一下。 注意:flat()会跳过空位,例子如下

2.自定义函数-利用reduce和concat

function oneDimensiona(arr) {
    let flag = Array.isArray(arr);
    let arr1 = [];
    if(flag) {
        return arr.reduce((pre,cur) => 
            {
                if(Array.isArray(cur)) { return pre.concat(oneDimensiona(cur))};
                pre.push(cur)
                return pre
            },arr1)
    }
    return arr1
}
oneDimensiona([9, 8, 9, [2,5 ,6 , [7, 8, 10, [1,3]]]])

3.join- 但须注意类型转换

这个思路是将数组先转为字符串,在从字符串转为数组。那么下面还会介绍其他字符串转为数组的方法

let arr = [9, 8, 9, [2,5 ,6 , [7, 8, 10, [1,3]]]]
console.log(arr.join()) // join将数组转为字符串 9,8,9,2,5,6,7,8,10,1,3
let newArr = arr.join().split(',') // split将字符串用参数里面的形式隔开,将字符串变为数组
console.log(newArr) // 此时是这些元素都是字符串类型 ['9', '8', '9', '2', '5', '6', '7', '8', '10', '1', '3'] 

3.1 toString将数组转为字符串

let arr = [9, ,8, 9, [2,5 ,6 , [7, 8, 10, [1,3]]]]  // 注意空位会被转为0
console.log(arr.toString()) // 2 9,,8,9,2,5,6,7,8,10,1,3
let newArr = arr.join().split(',') // split将字符串用参数里面的形式隔开,将字符串变为数组
console.log(newArr) //?['9', '', '8', '9', '2', '5', '6', '7', '8', '10', '1', '3']

3.2 toLocaleString()将数组转为字符串

toLacaleString()和toString()的区别我看到大佬总结了下:

1.当数字是四位数以及以上,toLocaleString()会让数字三位三位一分隔

2.转换时间格式上的区别
相关代码可以看toString()和toLocaleString()有什么区别 - 雪莉06 - 博客园

?3.3 空字符串的方法

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"]

3.4转换类型(遍历,用Number,或者+都可以)

?

4.递归

let array = [9, 8, 9, [2,5 ,6 , [7, 8, 10, [1,3]]]]
let arr1 = []
function oneDimension(arr) {
    for(let i = 0; i< arr.length; i++) {
        if(Array.isArray(arr[i])) {
            oneDimension(arr[i])
        } else {
            arr1.push(arr[i])
        }
    }
}
oneDimension(array)
console.log(arr1)

我能写这篇文章,很大程度上看了这位博主写的文章,学到了很多,指路js将多维数组转换为一维数组_Neal__caffreal的博客-CSDN博客_js多维数组转化为一维数组

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 16:02:57  更:2022-05-01 16:05:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:05:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码