首页
学习
活动
专区
工具
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
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面试官:怎样实现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.3K50

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

    数组扁平化 数组扁平化就是将多层数组拍平成一层,如[1, [2, [3, 4]]]变成[1, 2, 3, 4] 可以使用递归来实现,就直接遍历最外层数组,如果遍历的元素是数组,那就继续递归,直到不是数组为止...也可以使用some()方法来更简单地实现,因为some()方法返回数组是否有元素满足条件的布尔值,因为可以将条件设置为数组中是否有元素是数组。...扁平化) flat 方法实现 - 掘金 大佬讲的非常细,循序渐进介绍了很多种方法。...手写题(搞懂后,提升真的大) - 掘金 GitHub - qianlongo/fe-handwriting: 手写各种js Promise、apply、call、bind、new、deepClone…...面试官连环追问:数组拍平(扁平化) flat 方法实现 - 掘金 (建议精读)原生JS灵魂之问(中),检验自己是否真的熟悉JavaScript? - 掘金

    1.3K10

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

    博客地址: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

    高频js手写题之实现数组扁平化、深拷贝、总线模式

    三道js手写题的思路和代码实现数组扁平化演示效果将[1, 1, 2, [1, 2]] 变成 1, 1, 2, 1, 2第一种: 直接使用.flatconsole.log([1, [1,2],[1,[2]...]].flat(3));可以将多维数组,降维,传的参数是多少就降多少维一般直接传参数为 Infinity(简单粗暴) 第二种: 递归方法的方法 + 借用数组的API完成(1)function flattten...// some() 方法会依次执行数组的每个元素: // 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。...会将多维数组降维一层 } return arr}第五种: 将多维数组转换成字符串,在进行操作(1)function flatten(arr) { let str = arr.toString...利用Node.js来了解 事件总线var events = require('events');var eventEmitter = new events.EventEmitter();eventEmitter.on

    37040

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

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

    90040

    如何用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方法把字符串重新转换为数组

    53220

    高频js手写题之实现数组扁平化、深拷贝、总线模式_2023-02-23

    三道js手写题的思路和代码实现 数组扁平化 演示效果 将[1, 1, 2, [1, 2]] 变成 1, 1, 2, 1, 2 第一种: 直接使用.flat console.log([1, [1,2],[...1,[2]]].flat(3)); 可以将多维数组,降维,传的参数是多少就降多少维 一般直接传参数为 Infinity(简单粗暴) 第二种: 递归方法的方法 + 借用数组的API完成 (1) function...// some() 方法会依次执行数组的每个元素: // 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。...会将多维数组降维一层 } return arr } 第五种: 将多维数组转换成字符串,在进行操作 (1) function flatten(arr) { let str = arr.toString...利用Node.js来了解 事件总线 var events = require('events'); var eventEmitter = new events.EventEmitter(); eventEmitter.on

    42310

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券