千家信息网

javascript中怎么实现数组拍平

发表于:2024-10-27 作者:千家信息网编辑
千家信息网最后更新 2024年10月27日,javascript中怎么实现数组拍平,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先是第一种方法,递归处理,代码如下
千家信息网最后更新 2024年10月27日javascript中怎么实现数组拍平

javascript中怎么实现数组拍平,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

首先是第一种方法,递归处理,代码如下:

var arr = [1, 2, 3, [3, 3, 3, [5, 4, 5, 6, 6, 7, 8]],
[333, 4444]
];
function product() {
// 1、创建一个空数组,
var newarr = [];
///2、并且返回一个函数,函数参数为要拍平的数组
return function flatten(arr) {
// 3、循环数组,判断每一项,不为输的话将其塞入newarr
// 若为数组,递归调用 faltten,并将结果与newarr合并
for (var t of arr) {
if (!Array.isArray(t)) {
newarr.push(t);
} else {
newarr.concat(flatten(t))
}
}
return newarr
}
}

var flatten = product();
console.log(flatten(arr))

执行结果为:

上面这这种方法比较中规中矩,代码详解见注释,下面这种方法运用到了javascript语言的一些新特性,代码如下:

var arr = [1, 2, 3, [3, 3, 3, [5, 4, 5, 6, 6, 7, 8]],
[333, 4444]
];
function flatten(arr){
return arr.reduce(function(pre,cur){
if(!Array.isArray(cur)){
return [...pre,cur];
}else{
return [...pre,...flatten(cur)]
}
},[])
}

console.log(flatten(arr))

上面代码中用了ES6的一个新特性扩展云算法 "...","[...abc,...fff]"其作用相当于abc.concat(fff),这种用法更加直观明了,还有就是运用了reduce方法。reduce是javascript语言中数组的一个方法。

数组调用recduce方法时,可以传递两个参数,第一个参数为回调函数,第二个参数为一个初始值。回调函数中需要传递两个参数,第一个参数为每次执行函数的返回值,第二个参数为当前索引对应数组的值。reduce的第二个参数是可以省略的,省略的话,回调函数第一次调用的参数为数组的第一项和第二项的值,如果没有省略,回调函数的第一个参数就是这个初始值。上面的例子,reduce的第二个参数设置了一个空数组。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

参数 数组 函数 方法 代码 两个 就是 特性 结果 语言 递归 帮助 清楚 直观 中规中矩 中用 作用 例子 内容 对此 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库查询如何设置输入参数 软件开发行业是属于互联网吗 网络安全知识 题目 魔兽世界匕首岭是什么服务器 魔兽178数据库怀旧 数据库标识m什么意思 艾佛森视频软件开发 网络安全教育黑板板 数据库联合主键可以更改吗 怎么用核心期刊数据库检索 计算机应用软件开发是指 wincc项目服务器在哪找 乙方软件开发值不值得去 浪潮服务器操作系统支持 服务器同步北京时间云空间 2k客户端已从服务器断开 软件开发岗面试题 自查工作总结网络安全工作计划 什么时候会用到数据库脱敏 在软件开发过程中常用图 中邮理财软件开发待遇 幼儿园网络安全手抄报内容 在数据库中搜索数据 浏览器ip地址访问服务器 项目负责人 软件开发 网络安全宣传周青少年日的征文 网络安全产品效能难吗 搭建网站服务器装什么系统 python用于软件开发 中大型软件开发最难环节
0