JS数组&&数组对象去重
时间:2019-09-17
本文章向大家介绍JS数组&&数组对象去重,主要包括JS数组&&数组对象去重使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
数组去重
面试中经常问的一道题,使用JS写一个函数,对数组进行去重。
1.使用ES6的new Set()方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> let arr = [1,1,2,2,3,3,4,4,5,5]; function unique(arr){ return new Set(arr) } let res = unique(arr); console.log(res); </script> </body> </html>
2.使用数组的indexOf方法进行去重
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> let arr = [1,1,1,2,3,3,4,11,112,332,332,2,2,3,3,4,4,5,5]; /* 思路: 1.创建一个空的数组 2.对arr的数据进行循环遍历,判断空数组是否有arr的值,没有就push进去 */ let uniqueArr = []; arr.map(item=>{ // console.log(item); uniqueArr.indexOf(item) == -1 ? uniqueArr.push(item) : ""; }) console.log(uniqueArr); </script> </body> </html>
数组对象去重
1.使用reduce对数组对象去重
let log = console.log.bind(console); let person = [ {id: 0, name: "小明"}, {id: 1, name: "小张"}, {id: 2, name: "小李"}, {id: 3, name: "小孙"}, {id: 1, name: "小周"}, {id: 2, name: "小陈"}, ]; let obj = {}; person = person.reduce((cur,next) => { obj[next.id] ? "" : obj[next.id] = true && cur.push(next); return cur; },[]) //设置cur默认类型为数组,并且初始值为空的数组 log(person);
2.使用reduce对数组字符串去重且保留2个相同的属性值
去重前:
去重后:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> let person = [{ 'age': 41, 'id': 12, }, { 'age': 20, 'id': 12, }, { 'age': 23, 'id': 12, }, { 'age': 25, 'id': 15, }, { 'age': 30, 'id': 15, }, { 'age': 12, 'id': 20, }, ]; let log = console.log.bind(console.log); let obj = {}; let obj2 = {}; let peon2 = []; let peon = person.reduce((cur, next) => { // 这里三元表达式的""表示什么也不操作 这里的next'id'就意味着这个程序就是根据next.'id'进行去重; // obj[next.id] ? "" : obj[next.id] = true && cur.push(next); if (obj[next.id]) { // 判断数组对象里面的ID是否存在,如果存在,就追加到peon2数组中 peon2.push(next); } else { obj[next.id] = true && cur.push(next); } // log(obj); return cur; }, []) // 设置cur默认类型为数组,并且返回值为空的数据 // 对数据再次进行去重 peon2 = peon2.reduce((cur, next) => { if (obj2[next.id]) { peon2.push(next); } else { obj2[next.id] = true && cur.push(next); } return cur; }, []) peon2.map(item => { peon.push(item); }) log(peon); </script> </body> </html>
更多资料:
- https://www.cnblogs.com/caideyipi/p/7679681.html
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
原文地址:https://www.cnblogs.com/sauronblog/p/11531277.html
- Oracle 12c ASM|专题配额组的配额真的管用吗?
- 即时通讯软件可以用GO语言实现吗
- Go语言-连接数据库SQLite、MySQL、Oracle - Mike_zh
- 连接redis
- glang文件读写
- Spring框架中的设计模式(三)
- go语言结构体定义使用
- Spring框架中的设计模式(四)
- Go语言单元测试
- go语言中json转成map结构
- Spring框架中的设计模式(五)
- Oracle 12c数据库优化器统计信息收集的最佳实践(二)
- hdu-----(4514)湫湫系列故事——设计风景线(树形DP+并查集)
- hdu----(1402)A * B Problem Plus(FFT模板)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于飞桨PaddleClas实现轧钢带表面缺陷分类,top1准确率可达100%
- 01Python的基本的数据结构之List
- 02Python数据结构之再谈List的常用操作
- 03Python List不得不知的操作之改、查
- 04Python基础之字符串Str
- 05Python元组tuple的个性
- Tkinter Canvas
- Python实现最小二乘法
- 一个简单的例子学明白用Python插值
- python 类class基础简明笔记
- 数据离散化及其KMeans算法实现的理解
- [tensorflow损失函数系列]sparse_softmax_cross_entropy_with_logits
- 怎样将Anaconda设置为国内的镜像
- Python实现KMeans算法
- Python面向对象编程