使用reduce实现数组扁平化
实现的目标
使用数组原生的API,reduce来实现flat,又叫数组拍平。
下面是一个数组拍平的例子:
[1, [[2], 3, 4], 5] --> [1,2,3,4,5]
原生flat具有的特点
原生flat每调用一次,数组的维度减少1,多维数组在这种情况时可能处理起来很麻烦,无法一次性的边多维数组变为一维数组,比如下面这个例子。
const arr = [1, [[2], 3, 4], 5];
console.log(arr.flat()); // [1,[2],3,4,5]
使用reduce函数实现数组扁平化
使用reduce函数实现数组的扁平化主要用到下面的几个API。
- reduce
- concat
reduce重点是理解其回调函数的两个参数,主要是什么意思,分别是pre,cur。其中pre代表的是之前的累积和,cur代表的是当前的元素。
concat重点是理解谁调用concat,就把后面的部分进行结构赋值,然后加入到调用concat的部分,请看下面的例子:
// 测试concat
const test = [666];
test.concat([1,2,3]) // [666,1,2,3]
实现代码
// 使用reduce实现
const myFlat = (arr) => {return arr.reduce((pre,cur) => {return pre.concat(Array.isArray(cur) ? myFlat(cur) : cur);},[])
}
const arr = [1, [[2], 3, 4], 5];
console.log(myFlat(arr)); // [1,2,3,4,5]
使用reduce实现数组扁平化相关推荐
- reduce实现filter,map 数组扁平化等
map函数接收一个函数作为参数,作为参数的函数接收三个参数值,分别是遍历数组的每一项元素,元素的索引和数组本身.这三个参数刚好和reduce函数接收的第一个函数参数的第2.3.4个参数是对应的.这是实 ...
- JS数组扁平化flat,reduce等六种方式实现
数组扁平化:将数组中嵌套的数组拉平变成一维数组. 方法1:reduce,遍历数组每一项,若值为数组则递归遍历,否则concat 代码如下 let arr = [1, [2, 3, [4, 5], 6] ...
- 数组去重与数组扁平化
一.数组去重(1)indexOf() function only(arr){var res=[];arr.forEach(function(item){if(res.indexOf(item)==-1 ...
- JAVA数组扁平化整合_数组扁平化的几种处理放法
清明节,这几天放假闲来无事,好好研究一下基础知识,今天看看数组扁平化该怎么处理: 先来看数组扁平化是什么: var arr = [1,2,3,4,[5,6,[7,8]],true] => [1, ...
- JS----JavaScript中数组扁平化
扁平化 一. 什么是数组扁平化? 数组扁平化就是将一个多层嵌套的数组 (Arrary) 转化为只有一层. 数组扁平化概念:数组扁平化是指将一个多维数组变为一维数组 // 多层嵌套 [1, 2, [3, ...
- 【算法图解|2】JavaScript 如何实现数组扁平化
数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组. 举个例子,假设有个名为 flatten 的函数可以做到数组扁平化, var arr = [1, [2, ...
- es6删除数组某一项_精学手撕系列——数组扁平化
参考文章:面试官连环追问:数组拍平(扁平化) flat 方法实现 编者荐语: 在前端面试中,手写flat是非常基础的面试题,通常出现在笔试或者第一轮面试中,主要考察面试者基本的手写代码能力和JavaS ...
- JAVA数组扁平化整合_5种方法实现数组扁平化
数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] 复制代码 实现 1. reduce 遍历数组每一 ...
- JavaScript数组常用方法解析和深层次js数组扁平化
前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...
最新文章
- 刚刚,华为重磅宣布:无人驾驶正式上高速!
- 笔记JavaScript基本概念
- 润乾转html居中,[分享]润乾报表内置的jsp编辑器
- 关于网络线与电话线共用之体会
- SSL与OpenSSL关系介绍
- 宏BOOST_TEST_ALL_WITH的用法实例
- C语言2011计算机二级c语言考点:c语言的基础知识
- windows .bat获取XCOPY返回值
- 【Ynoi2011】成都七中【树论】【点分树】【离线】【树状数组】
- tomcat与apache的面试题
- html ajax请求jsp,JSP+jquery使用ajax方式调用json的实现方法
- oracle10数据库链接失败,oracle 10g Enterprise Manager 无法连接到数据库实例分析
- 基于WF4的新平台-流程模式-(6)动态串行
- 机器学习 —— 神经网络(matlab)
- 北大成立人工智能研究院,中科院院士黄如担任院长
- wordpress提示“Error establishing a database connection“的解决办法
- hdu 5208 Where is Bob (数位dp,k进制树合并)
- 【LeetCode-769. medium】最多能完成排序的块
- CAD填充无法修剪的解决办法
- 【第4章】网络安全体系与网络安全模型(信息安全工程师)