黑色炫酷灯饰照明科技企业商务网站模板,内贸在什么网站做,免费模板下载免费版,婚礼策划公司文章目录 1 实现数组的扁平化1.1 递归1.2 reduce1.3 扩展运算符1.4 split和toString1.5 flat1.6 正则表达式和JSON 1 实现数组的扁平化
1.1 递归
通过循环递归的方式#xff0c;遍历数组的每一项#xff0c;如果该项还是一个数组#xff0c;那么就继续递归遍历#xff0c… 文章目录 1 实现数组的扁平化1.1 递归1.2 reduce1.3 扩展运算符1.4 split和toString1.5 flat1.6 正则表达式和JSON 1 实现数组的扁平化
1.1 递归
通过循环递归的方式遍历数组的每一项如果该项还是一个数组那么就继续递归遍历实现数组的每一项的连接。
let arr [1, [2, [3, 4, 5]]];function flatten(arr) {let result [];for (let i 0; i arr.length; i) {if (Array.isArray(arr[i])) {result result.concat(flatten(arr[i]));} else {result.push(arr[i]);}}return result;
}
flatten(arr);1.2 reduce
简化第1种方法的代码用reduce()来实现数组的拼接。
function flatten(arr) {return arr.reduce(function(prev, next) {return prev.concat(Array.isArray(next) ? flatten(next) : next);}, []);
}1.3 扩展运算符
扩展运算符和some()的方法共同使用逐层展开数组。
function flatten(arr) {while (arr.some(item Array.isArray(item))) {arr [].concat(...arr);}return arr;
}1.4 split和toString
先用toString()将数组转换成用逗号分隔的字符串然后再用split()方法把字符串重新转换为数组。
function flatten(arr) {return arr.toString().split(,);
}1.5 flat
ES6中flat方法的语法arr.flat([depth])
其中depth是可以传递数组的展开深度默认是1即展开1层数组。
如果层数不确定参数可以传进Infinity代表不论多少层都要展开。
function flatten(arr) {return arr.flat(Infinity);
}1.6 正则表达式和JSON
先用JSON.stringify()的方法将数组转换为字符串然后通过正则表达式过滤掉字符串中的数组的方括号最后再利用JSON.parse()把它转换成数组。
function flatten(arr) {let str JSON.stringify(arr);str str.replace(/(\[|\])/g, );str [ str ];return JSON.parse(str);
}