您现在的位置是:首页 > Javascript
当前栏目
前端面试 【JavaScript】— JS中将数组扁平化有哪些方法?
2023-03-15 23:26:04 时间
对于前端项目开发过程中,偶尔会出现层叠数据结构的数组,我们需要将多层级数组转化为一级数组(即提取嵌套数组元素最终合并为一个数组),使其内容合并且展开。那么该如何去实现呢?
需求:多维数组=>一维数组
1. 调用ES6中的flat方法
let list= [1, [2, [3, [4, 5]]],6];
let newList = list.flat(Infinity);
console.log(newList);
// [1,2,3,4,5,6]
2. replace + split
let list= [1, [2, [3, [4, 5]]],6];
let str = JSON.stringify(list);
let newList = str.replace(/([|])/g, '').split(',');
console.log(newList);
// ["1", "2", "3", "4", "5", "6"]
3. replace + JSON.parse
let list= [1, [2, [3, [4, 5]]],6];
let str = JSON.stringify(list);
str = str.replace(/([|])/g, '');
str = '['+str+']';
let newList=JSON.parse(str);
console.log(newList);
// [1, 2, 3, 4, 5, 6]
4. 普通递归
let list= [1, [2, [3, [4, 5]]],6];
let result= [];
let fn=function(list) {
for(let i=0; i<list.length; i++) {
let item=list[i];
if (Array.isArray(list[i])){
fn(item);
} else {
result.push(item);
}
}
};
fn(list);
console.log(result);
// [1, 2, 3, 4, 5, 6]
5. 利用reduce函数迭代
let list= [1, [2, [3, [4, 5]]],6];
function flat(list) {
return list.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur)?flat(cur):cur);
}, []);
};
let newList = flat(list);
console.log(newList);
// [1, 2, 3, 4, 5, 6]
6. 扩展运算符
let list= [1, [2, [3, [4, 5]]],6];
while (list.some(Array.isArray)) {
// 将多维数组逐渐展开拼接
list=[].concat(...list);
};
console.log(list);
// [1, 2, 3, 4, 5, 6]
相关文章
- JavaScript 异步编程指南 — 关于协程的一些思考
- RocketMQ的编解码技术细节
- 不使用第三个变量,怎么交换两个变量的值?
- 这几个CSS概念,你了解吗?
- Swift结果生成器:几个必备的知识点
- 比开源快30倍的自研SQL Parser设计与实践
- 一篇文章带你了解JavaScript随机数
- 前端百题斩——原型、构造函数和实例之间的奇妙关系
- ES 标准模块化规范概述和导入导出
- 拒绝反爬虫!教你搞定爬虫验证码
- Python Selenium爬虫实现歌曲免费下载
- [号外] 2015年度H5数据报告出炉!100万个H5里总结的经验!
- CSS 推陈出新 | ::marker 让文字序号更有意思
- 面试官:说说对 Node.js 中的事件循环机制理解?
- 巩固一下 JS 可选 (?.)操作符号,原来函数也可以用可选写法,又学到了!
- Nacos配置中心模块详解
- Match 是什么语法?PHP8 也加了
- 泡图书馆,我想到了享元模式
- 使用 JavaScript 编写更好的条件语句
- 使用CSS3实现酷炫的3D旋转视图