数组去重与数组扁平化
一、数组去重
(1)indexOf()
function only(arr){var res=[];arr.forEach(function(item){if(res.indexOf(item)==-1){res.push(item);}})return res; }
(2)Set结构
var set=new Set(arr); Array.from(set);
(3)filter过滤
function only(arr){var res=[];res=arr.filter(function(item,index,self){if(self.indexOf(item)==index){return item;}})return res; }
(4)reduce()
function only(arr){var res=[];return arr.reduce((pre,cur)=>{if(!pre.includes(cur)){return pre.concat(cur);}else{return pre;}},[]) }
(5)lastIndexOf()
function only(arr){var res=[];arr.forEach(function(item){if(arr.indexOf(item)==arr.lastIndexOf(item)){res.push(item);}})return res; }
二、数组扁平化处理可以用reduce
例:实现一个flatten方法,使得输入一个数组,该数组里面的元素也可以是数组,该方法会输出一个扁平化的数组。
arr=[[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]; console.log([1,2,2,3,4,5,5,6,7,8,9,11,12,12,13,14,10]);
(1)递归
function flatter(arr){var res=[];arr.map(function(item){if(Array.isArray(item)){res=res.concat(flatter2(item));}else{res.push(item);}})return res; }
(2)reduce()
function flatten(arr){return arr.reduce(function(pre,item){return pre.concat(Array.isArray(item)?flatten(item):item);},[]);
}
(3)toString()+spilt()+ParseInt()
调用数组的toString()方法,将数组变成字符串,然后再用split()分割还原成数组
function flatten(arr){return arr.toString().split(',').map(function(item){return parseInt(item);}) }function flatten(arr){return arr.join(',').split(',').map(function(item){return parseInt(item);})// 用join()方法也可以转成字符串 }
缺点:只适用于数组元素均为数字的情况。
(4)扩展运算符
ES6的扩展运算符能将二维数组变为一维。
[ ].concat(...[1,2,3,[4,5]])——>[1,2,3,4,5]
arr.some()只要有一个符合条件就返回true,所以循环遍历判断元素是否包含数组,如果有就使用一次扩展运算符。
function flatten(arr) {while(arr.some(item=>Array.isArray(item))) {arr = [].concat(...arr);}return arr; }
转载于:https://www.cnblogs.com/xiaoan0705/p/11263278.html
数组去重与数组扁平化相关推荐
- 数组去重以及数组对象去重方法总结
数组去重以及数组对象去重方法总结 一.数组对象去重 1.reduce方法 2.利用原生js+空对象+空数组 3.利用原生js+标志位+空数组 4.利用双指针思想+splice方法 二.数组去重 1.利 ...
- vue数组去重,数组对象去重
1:数组去重 1:数据格式 list:[ a:"aaa", b:"bbb", c:"ccc", d:"ddd", a:& ...
- php 数组去重_数组去重(JavaScript 为例)
数组去重,就是在数组中查找相同的元素,保留其中一个,去除其他元素的程. 从这句话揭示了数组去重的两个关键因素: 找到重复项 去除重复项 本文告诉你在遇到去重问题时该如何思考,并以 JavaScript ...
- java数组去重_数组去重12种方案-你要的全在这
首先我们先温习一下数组的常用的方法 pop push shift unshift slice splice sort reverse concat join indexOf lastIndexOf m ...
- es6 数组去重,数组里面的对象去重
// 数组去重 {const arr = [1,2,3,4,1,23,5,2,3,5,6,7,8,undefined,null,null,undefined,true,false,true,'中文', ...
- 数组去重——将数组中重复的元素去掉
一.核心算法 1.创建一个新的空数组,拿旧数组与新数组比较,即遍历旧数组,如果新数组中没有这个元素,就把这个元素添加到新数组中. 2.输出新数组. 二.完整代码 <!DOCTYPE html&g ...
- 二维数组去重,数组对象去重
二维数组去重 使用对象的key不能重复原则,对数组进行去重 var arr = [[1, 1, 2], [1, 2, 1], [1, 1, 2], [1, 2, 3]] var obj = {} ar ...
- js最简单数组去重_js数组去重最常用的5种方法
今天来聊一聊js数组去重的一些方法,包括一些网上看到的和自己总结的,总共5种方法,希望对大家有帮助. 第一种:遍历数组法 这种方法最简单最直观,也最容易理解,代码如下: 这种方法很好理解,利用了ind ...
- es6 数组去重_JS数组去重的9种方法(包括去重NaN和复杂数组类型)
其实网上已经有很多js数组的去重方法,但是我看了很多篇并自己通过代码验证,发现都有一些缺陷,于是在研究多篇代码之后,自己总结了9种方法,如果有哪里不对请及时纠正我哈~ 测试代码 let arr1 = ...
最新文章
- 优雅的理解 call 和 apply 的使用方法
- python pytorch自定义_PyTorch使用自定义模块创建数据模型
- 前端学习(523):双飞翼布局
- Oracle循环语句
- [leetcode]240. 搜索二维矩阵 II
- C#基础学习第一天(.net菜鸟的成长之路-零基础到精通)
- 【web前端】JavaScript闭包
- 传智播客杨中科老师的wpf基础视频教程、C#视频教程
- 【Qt学习之路】我的Qt历程
- 校园客户端linux创翼,电信创翼校园客户端-电信创翼校园网客户端下载 4.7.9.589 官方版 - 河东下载站...
- matlab的做潮流计算,Matlab实现潮流计算程序
- matlab已知热敏电阻数据,Matlab在热敏电阻特性测量实验中的应用
- Intel出品开源图片标注工具CVAT在Ubuntu18.04上部署
- 网页通用的测试用例(出处:: 51Testing-- lxp1119216)
- java 穷举_java循环穷举
- 团队协作软件之confluence和jira的配套使用
- 360在网站安全防护中的实践
- 机器学习笔记~图像的空间分辨率
- 英语单词记忆 词源法-思维导图(09)词源bar/bal/ban-41
- 云计算、大数据和人工智能三者到底什么关系
热门文章
- Redis的常用命令——hash的常用命令
- c语言案例——输入一个字符串,将其逆序输出
- Python+selenium 自动化-mac下安装配置chrome驱动方法
- 对Keil在线烧录程序弹出“The firmware of the connected J-Link[SN:xxxxxxxx] does not support......的问题解决
- 第八周项目实践1 建立顺序串的算法库
- [YTU]_2390( 抽象一个形状类)
- MATLAB图像函数以及应用(第六章)边界问题
- 微信和支付宝中的一些常用方法封装
- 机器学习之过拟合与欠拟合以及偏差-方差分解
- CodeForces-985C Liebig's Barrels