一、数组(Array)的合并

1.forEach()遍历其中一个数组,将该数组的每一项push到另一个数组中

//遍历合并
let arr1 = [ 1, 2, 3, 4, 5];
let arr2 = [ 7, 8, 9, 4, 5];arr1.forEach( item => arr2.push(item) );

2.拓展运算符(ES6的)

//拓展运算符
let arr1 = [ 1, 2, 3, 4, 5];
let arr2 = [ 7, 8, 9, 4, 5];arr1.push( ...arr2 );

3.concat()一次合并多个数组(原数组不变,返回一个新数组)

//concat()合并多个数组
let arr1 = [ 1, 2, 3, 4, 5];
let arr2 = [ 7, 8, 9, 4, 5];
let arr3 = [ 10, 11, 12, 13, 14];let arr = arr1.concat(arr2, arr3);

4.使用apply()方法合并数组(apply(obj,array),其默认将array数组转化成一个参数列表)

//apply()合并数组
let arr1 = [ 1, 2, 3, 4, 5];
let arr2 = [ 7, 8, 9, 4, 5];arr1.push.apply(null, arr2);    //相当于arr1.push(...arr2)

二、数组(Array)的去重

1.利用对象属性的唯一性去重(*个人比较推荐,在面对数组中每一项都是一个对象的时候,一些API是不生效的)

//利用对象属性的唯一性去重
let list = [{Staff_Code: "001", Staff_Name: "唐三"},{Staff_Code: "001", Staff_Name: "唐三"},{Staff_Code: "002", Staff_Name: "小舞"},{Staff_Code: "003", Staff_Name: "奥斯卡"}
];cutarray(arr) {let obj = {};    //obj用来记录该项重复出现了几次let brr = [];    //brr是去重后的数组arr.forEach((item) => {if (obj[item.Staff_Code] == undefined) {obj[item.Staff_Code] = 1;brr.push(item);} else {obj[item.Staff_Code] += 1;}});return brr;
}let arr = this.cutarray(list);

2.递归去重(先给数组排序,然后相邻项判断是否相等,相等的用splice()截去。)

//递归去重(数组中存储的是原始(基本)数据类型,而非引用类型对象)cutarray(arr) {let len=arr.length;arr.sort((a,b) => a-b);    //a-b升序;b-a降序function loop(index){if(index >= 1) {if(arr[index]===arr[index-1]) { arr.splice(index, 1);}loop(index-1)}}return arr;
}

3.利用filter()去重

// 如果新数组的当前元素的索引值 == 该元素在原始数组中的第一个索引,则返回当前元素
/**arr.indexOf(item),该方法将从头到尾地检索数组,看它是否含有对应的元素。如果找到一个item,则返回 item的"第一次出现的位置"。**/let list = arr.filter((item,index) => arr.indexOf(item) === index );

4.Set去重(ES6中的)

//Set去重
let list = [...new Set(arr)];    // arr需要去重的数组// 或者
let list1 = Array.form(new Set(arr));

JS中数组的合并与去重相关推荐

  1. php合并一维数组,PHP中一维数组的合并与去重的方法

    这篇文章主要介绍了关于PHP中一维数组的合并与去重的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 合并数组的方法array_merge:数字键,直接往后添加,key重置 字符串键 ...

  2. js中数组的增删改查遍历迭代过滤

    注:最后附有源码,可自行测试,动动手印象更深刻 js中数组的增删改查.排序.遍历.迭代.过滤 1.展开语法 2.解构赋值 3.剩余解构 4.增删改 5.合并拆分 6.查 7.排序 8.遍历 9.迭代 ...

  3. js中数组常用的方法总结,包括ES6

    原文地址:js中数组常用的方法总结,包括ES6 1.push() 后增 push()方法可以向数组后添加一个新的元素,并返回新数组的长度. 末尾添加,返回长度,改变原数组 var a = [1,2,3 ...

  4. js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join

    全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组增删查改 代码如下: //元素增加 var names=[]; //定义数组并初始化为空 names = ["小明 ...

  5. js中数组定义Array

    全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组定义 js中数组的定义非常简单,包含以下5中方式.不过首先要明确的是数组是Array类型的.不是基本数据类型 代码如下: v ...

  6. js中数组原型Array、自定义原型函数Array.prototype

    全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组原型.自定义原型函数 每个数组都包含length.prototype.constructor属性. 通过在prototype ...

  7. js中数组反向、排序reverse、sort

    全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组反向.排序 数组反向使用reverse函数,数组排序使用sort函数,排序函数可以传入比较函数,也可以修改数组圆形,自定义添 ...

  8. js中数组过滤、遍历、迭代every、some、filter、map、forEach、reduce、reduceRight

    全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组过滤.遍历.迭代 数组的过滤.遍历.迭代操作中 1.过滤为将满足条件的元素筛选出来,返回数组 2.遍历为分别计算每一个元素值 ...

  9. JS中数组迭代方法(JavaScript从入门到疯癫)

    数组迭代的方法包含了以下七个( map,filter,forEach,some,every, findIndex,reduce) 目录 1.map 2.filter 3.foreach 4.数组som ...

最新文章

  1. ios 比 android 精致,iOS小组件对比ColorOS 11个性化,网友:这太好选了
  2. Android常用URI收藏
  3. 《城市大脑全球标准研究报告2020》摘要内容
  4. 研发团队资源成本优化实践
  5. springmvc如何访问静态文件,例如jpg,js,css
  6. python -lambda表达式的用法
  7. SQL Server聚集索引的选择
  8. 字符串距离(opj )(动态规划)
  9. Java时区处理初学者指南
  10. ZOJ 3490 String Successor
  11. html5hover鼠标悬停,不使用hover外部CSS样式实现hover鼠标悬停改变样式
  12. 2015蓝桥杯C++A:方程整数解;星系炸弹(3种解法)
  13. php大马程序_php大马是什么
  14. c语言自学考1课后答案,C语言理论练习题(1)及参考答案
  15. 数据库中的层次模型是什么(树形结构)
  16. 推荐一位从外包走进腾讯的朋友
  17. java一些必会算法(转自落尘曦的博客:http://blog.csdn.net/qq_23994787。 )
  18. 一个pom文件中出现了两个相同的依赖_在IDEA里解决maven的pom引用jar包冲突
  19. 南阳题目364-田忌赛马
  20. Python金融股票和量化分析三方库汇总

热门文章

  1. 微信小程序注册和制作简单页面
  2. java keyset entryset 顺序_「entryset」如何遍历Map,map的keySet()和EntrySet()区别 - seo实验室...
  3. 差分模拟信号转单端输出电路设计
  4. activitythread.java,调用微信登陆授权时,出现Uninitialized ActivityThread问题?
  5. 1月云短信报告出炉,华为云跃居榜首
  6. 中国JAVA第一人张立猛,《我的世界》建造中国地图第一人。
  7. 拼多多开店怎么样|盛天海科技
  8. be备份ad_AD域控的备份及还原
  9. 易语言多线程Api封装线程等待CPU优化
  10. 有哪些顶级水平的中国程序员?最后一个,我愿称之为神