怎么解析JavaScript数组去重和扁平化函数
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章将为大家详细讲解有关怎么解析JavaScript数组去重和扁平化函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、数组扁平化(又称数组降维
千家信息网最后更新 2025年01月20日怎么解析JavaScript数组去重和扁平化函数
这篇文章将为大家详细讲解有关怎么解析JavaScript数组去重和扁平化函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1、数组扁平化(又称数组降维)
flat()
方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回
const test = ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]]// flat不传参数时,默认扁平化一层test.flat()// ["a", "b", "c", "d", ["e", ["f"]], "g"]// flat传入一个整数参数,整数即扁平化的层数test.flat(2)// ["a", "b", "c", "d", "e", ["f"], "g"]// Infinity 关键字作为参数时,无论多少层嵌套,都会转为一维数组test.flat(Infinity)// ["a", "b", "c", "d", "e", "f", "g"]// 传入 <=0 的整数将返回原数组,不扁平化test.flat(0)test.flat(-1)// ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]]// 如果原数组有空位,flat()方法会跳过空位。["a", "b", "c", "d",,].flat()// ["a", "b", "c", "d"]
方法一:使用 reduce 方法
一次性扁平化所有
function flattenDeep(arr) { return Array.isArray(arr) ? arr.reduce( (acc, cur) => [...acc, ...flattenDeep(cur)] , []) : [arr]}// 测试var test = ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]]flattenDeep(test)// ["a", "b", "c", "d", "e", "f", "g"]
实现 flat 函数:
function flat(arr, depth = 1) { return depth > 0 ? arr.reduce((acc, cur) => { if(Array.isArray(cur)) { return [...acc, ...flat(cur, depth-1)] } return [...acc, cur] } , []) : arr}// 测试var test = ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]]// 不传参数时,默认扁平化一层flat(test)// ["a", "b", "c", "d", ["e", ["f"]], "g"]// 传入一个整数参数,整数即扁平化的层数flat(test, 2)// ["a", "b", "c", "d", "e", ["f"], "g"]// Infinity 关键字作为参数时,无论多少层嵌套,都会转为一维数组flat(test, Infinity)// ["a", "b", "c", "d", "e", "f", "g"]// 传入 <=0 的整数将返回原数组,不扁平化flat(test, 0)flat(test, -10)// ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]];// 如果原数组有空位,flat()方法会跳过空位。var arr = ["a", "b", "c", "d",,]flat(arr)// ["a", "b", "c", "d"]
方法二:栈
一次性降维所有
function flattenDeep(arr) { const result = [] // 将数组元素拷贝至栈,直接赋值会改变原数组 const stack = [...arr] // 如果栈不为空,则循环遍历 while (stack.length !== 0) { const val = stack.pop() if (Array.isArray(val)) { // 如果是数组再次入栈,并且展开了一层 stack.push(...val) } else { // 如果不是数组,就用头插法插入到结果数组中 result.unshift(val) } } return result}// 测试var test = ["a", ["b", "c"], ["d", ["e", ["f"]], "g"]]flattenDeep(animals)// ["a", "b", "c", "d", "e", "f", "g"]
2、数组去重
方式一:Set(ES6)
function unique(arr) { return Array.from(new Set(arr))}// 或者var unique = arr => [...new Set(arr)]// 测试var arr = [1, 2, 2, 3]unique(arr); // [1, 2, 3]
方式二:reduce
function unique (arr) { return arr.sort().reduce((acc, cur) => { if (acc.length === 0 || acc[acc.length - 1] !== cur) { acc.push(cur); } return acc }, [])};// 测试var arr = [1, 2, 2, 3]unique(arr); // [1, 2, 3]
方法三:filter
function unique(arr) { return arr.filter( (element, index, array) => { return array.indexOf(element) === index })}// 测试var arr = [1, 2, 2, 3]unique(arr); // [1, 2, 3]
关于怎么解析JavaScript数组去重和扁平化函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
数组
扁平
方法
参数
整数
测试
空位
函数
元素
一次性
关键
关键字
内容
文章
方式
更多
知识
篇文章
一维
不错
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
成都软件开发外企
商店数据库映射描述
办公局域网数据库安全访问技术
快捷和可靠软件开发模式
元神能不能转移服务器
滨州快消品管理软件开发公司
死亡空间3正版连不了ea服务器
长宁区什么是软件开发服务保障
cdm层用什么数据库
无法连接验证服务器
爱瑞思软件开发公司
网络技术路线app
北京常规软件开发资费
如何通过服务器代理
中国院士软件开发
检察机关 网络安全
串口服务器默认ip
服务器修改端口软件
导行式数据库
t-sql数据库编程实验步骤
商店数据库映射描述
智能汽车气候控制软件开发多少钱
网络安全章节工作总结
锐捷服务器
如何认识数据库安全问题
软件开发包括前端和那个
青社网络技术
软件开发经验说明
校园网络安全宣传周活动总结报告
c 连接不了数据库