需求
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()方法返回一个布尔值,表示是否存在特定条件下的元素标签:arr,扁平化,处理,数组,33,let,str,方法 From: https://www.cnblogs.com/wyl-k/p/18030101