首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JS数组扁平化_扁平化js

前言 数组是 JS 中使用频率仅次于对象的数据结构,官方提供了众多的 API,谈谈如何扁平化(flatten)数组。...数组扁平化,是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组 flat flat(depth) 方法会递归到指定深度将所有子数组连接,并返回一个新数组, depth指定嵌套数组中的结构深度...flatten(b) : b), []); flatten([1,[2,3],4,[[5,6],7]]) // [1, 2, 3, 4, 5, 6, 7] 复制代码 toString 只适于数组的元素都是数字...([])并将输出解析为数组 const flatten = arr => JSON.parse(`[${ JSON.stringify(arr).replace(/\[|]/g,'')}]`...undercore库或者lodash的中_.flatten函数,具体用法查阅API文档 _.flatten([1, [2], [3, [[4]]]]); => [1, 2, 3, 4]; 复制代码 参考文献 实现扁平化

1.2K20

嵌套数组的合并,扁平化数组

博客地址:https://ainyi.com/19 问题引入 请写一个 flat 方法,实现扁平化嵌套数组 对于 [ [], [], [], ...]...数组里嵌套数组,有个需求:将里面的数组元素都放到外层数组,变成 , , , ......+ 子数组有 13 个元素的数组 let arr = []; for (let i = 0; i < 10000; i++) { arr.push([Math.random()*100, Math.random...双重循环push,(数组元素较长时推荐,速度最快) // 数组里面每个元素都必须是数组才行 // 诸如这样 [[],[],[],[]] 才行,如果这样 [1,[],2,[]] 不行,因为 for of...(速度最慢) // 数组里面每个元素都必须是数组才行 // 诸如这样 [[],[],[],[]] 才行,如果这样 [1,[],2,[]] 不行,因为 ...后接不能是数字 // 用时:34 s newArr

2.1K30

精学手撕系列——数组扁平化

参考文章:面试官连环追问:数组拍平(扁平化) flat 方法实现 编者荐语: 在前端面试中,手写flat是非常基础的面试题,通常出现在笔试或者第一轮面试中,主要考察面试者基本的手写代码能力和JavaScript...()特性 注:数组拍平方法 Array.prototype.flat() 也叫数组扁平化数组拉平、数组降维。...面试官 N 连问: 第一问:下面数组如何实现扁平化?...因为它们在高版本浏览器并不兼容 方法二:转换为字符串,再把字符串对象用,转换成数组 可以先把多维数组先转换为字符串,再基于,分隔符将字符串对象分割成字符串数组 toString() 扁平化数组 arr...() 数组的话,继续循环 非数组的话,添加到新数组中 返回新数组对象 ES5 实现 flat 扁平化方法 let arr = [ [1, 2, 2], [3, 4, 5, 5],

85540

如何用JavaScript实现数组扁平化

什么是数组扁平化 将嵌套多层的数组“拉平”,变为一维数组。 为什么要数组扁平化 去除冗余,厚重和繁杂的装饰效果。...如何进行数组扁平化 方法一:递归实现 思路就是通过循环递归的方式,一项一项的去遍历,如果每一项还是一个数组,那么就继续往下遍历,利用递归程序的方法,来实现数组每一项的连接 let arr=[1,[2,...flatten(next):next) },[]) } flatten(arr);// [1,2,3,4,5] 方法三:拓展运算符实现 这个方法的实现,采用了拓展运算符和some的方法,两者共同使用,达到数组扁平化的目的....arr); } return arr; } flatten(arr);// [1,2,3,4,5] 方法四:split和toString 可以通过split和toString两个方法来共同实现数组扁平化...,由于数组会默认带一个toString方法,所以可以把数组直接转换成逗号分隔的字符串,然后再用split方法把字符串重新转换为数组

49920

面试官:怎样实现JS数组扁平化

一、什么是’扁平化扁平化的意思对于数组来说,就是将多维数组展开成一维数组或少于当前数组维数的数组。...二、实现扁平化 1、toString 和 split 相结合 思路: toString 可以将多维数组转变成字符串,在通过 split 转换成数组,此时每个元素都为字符串,但需注意的是 此时每个数组元素都为字符串...可以通过迭代的方式进行数组扁平化~ 实现: let arr = [1, [2, [3, 4, 5]]] function reduceArr (arr) { let result = arr.reduce...return result } console.log('结果是:', reduceArr(arr)) // 结果是:[1,2,3,4,5] 3、es6 flat函数 思路: es6的 flat函数实现数组扁平化...,语法:Array.flat(dep), dep为展开数组的维数(整数),如 dep 是 1, 就是展开1层,如想多维数组都展开成一维数组则 直接 dep 等于 Infinity 。

1.2K50

JS手撕(二) 数组扁平化、浅拷贝、深拷贝

数组扁平化 数组扁平化就是将多层数组拍平成一层,如[1, [2, [3, 4]]]变成[1, 2, 3, 4] 可以使用递归来实现,就直接遍历最外层数组,如果遍历的元素是数组,那就继续递归,直到不是数组为止...也可以使用some()方法来更简单地实现,因为some()方法返回数组是否有元素满足条件的布尔值,因为可以将条件设置为数组中是否有元素是数组。...function myFlatten(arr) { while (arr.some(item => Array.isArray(item))) { // 如果还有数组中还有数组,那就使用`concat...扁平化) flat 方法实现 - 掘金 大佬讲的非常细,循序渐进介绍了很多种方法。...面试官连环追问:数组拍平(扁平化) flat 方法实现 - 掘金 (建议精读)原生JS灵魂之问(中),检验自己是否真的熟悉JavaScript? - 掘金

1.2K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券