数组扁平化处理 多维数组-->一维数组
需求:将多维数组转化为一维数组
let arr = [[1,2],[33,4],[5]];
let str = JSON.stringify(arr); // json格式字符串 '[\"1\",\"2\",\"33\",\"4\",\"5\"]'
实现方法1:
flat()方法:这个方法为ES10方法,目前未在所有浏览器中都兼容
let arr = [[1,2],[33,4],[5]]; // 参数指要提取嵌套数组的结构深度,默认值为1,即默认只处理第一层的数组结构 // Infinity 指递归嵌套的所有层级 let flatArray = arr.flat(Infinity); console.log(flatArray);
实现方法2:
replace()和split()方法
let arr = [[1,2],[33,4],[5]]; let str = JSON.stringify(arr); str.replace(/\[|\]/g, "").split(","); // 或者str.replaceAll("[", "").replaceAll("]", "").split(",")
实现方法3:
字符串拼接
let arr = [[1,2],[33,4],[5]]; let str = JSON.stringify(arr); str = str.replace(/\[|\]/g, ""); str = "[" + str + "]"; let newArr = JSON.parse(str); // JSON.parse是将json格式的字符串转换为json对象
实现方法4:
递归处理
let newArr = []; function fn (arr) { for (let i = 0; i < arr.length; i++) { let item = arr[i]; if (Array.isArray(item)) { fn(item); } else { newArr.push(item); } } } let arr = [[1,2],[33,4],[5]]; fn(arr);
实现方法5:
reduce()方法
function flatten(arr) {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
})
}
let arr = [[1,2],[33,4],[5]];
flatten(arr);
// concat方法将两个或多个数组合并为一个新数组
// reduce方法为数组中每个元素依次执行回调函数,可以作为一个累加器,数组中每个值(从左到右)开始缩减直至最终成为一个值,还可以用来将多维数组转化为一维数组
// 语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
// total: 初始值,或者计算结束后的返回值
// currentValue: 当前元素
// initialValue: 传递给函数的初始值
// currentIndex: 当前元素的索引
// arr: 当前元素所属的数组对象,数组中有多少个元素即有多少个数组对象
实现方法6:
扩展运算符
let arr = [1, 2, [3, 4], [5, [6, 7]]]; while(arr.some(Array.isArray)) { arr = [].concat(...arr); }; // 通过循环和扩展运算符结合起来 some()方法返回一个布尔值,表示是否存在特定条件下的元素
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)