json数组根据某属性去重
数据:
let arry = [
{name: "张三", age: 23, work: '计算机'},
{name: "王五", age: 29, work: '计算机'},
{name: "张兴", age: 30, work: '考古'},
{name: "刘豆豆", age: 23, work: '物理'},
{name: "李铁锤", age: 20, work: '英语'},
{name: "毛豆豆", age: 20, work: '英语'},
{name: "王五5", age: 23, work: '计算机'},
]
第一种 :
利用filter+findIndex,通过判断数组中当前元素的下标与该元素第一次出现在数组中的下标是否一致来进行数组去重
function unRepeat(arry, key) {
let newArr = arry.filter((currentValue, currentIndex, currentArr) => {
return currentArr.findIndex(cV => cV[key] == currentValue[key]) == currentIndex
})
return newArr
}
第二种:
利用es6的new Map()的has属性进行筛选赋值
function unRepeat(arry, key) {
const res = new Map();
return arry.filter((arr) => !res.has(arr[key]) && res.set(arr[key], 1))
}
第三种:
利用reduce()方法的累积器作用,在对由对象组成的数组进行遍历时,通过对象hasObj来标记数组中每个元素id是否出现过。
function unRepeat(arry, key) {
let hasObj = {};
return arry.reduce((cur, next) => {
hasObj[next[key]] ? "" : (hasObj[next[key]] = true) && cur.push(next)
return cur
}, [])
}
调用:
console.log(unRepeat(arry, 'work'))
结果:

json数组根据某属性去重的更多相关文章
- JSON数组对象某个属性值查找
1.引用国外开源Linq写法的js框架 地址:https://archive.codeplex.com/?p=jslinq https://www.nuget.org/packages/jslinq ...
- JS实现JSON数组合并和去重
var a=[{"id":"1001","name":"张三","age":"18&quo ...
- js中 给json对象添加属性和json数组添加元素
js中 给json对象添加新的属性 比如现在有一个json对象为jsonObj,需要给这个对象添加新的属性newParam,同时给newParam赋值为pre.做法如下: var obj={ &quo ...
- JQUERY操作JSON数组添加新的属性和值
语法: var data = {}; data["Order"] =order; data["Sort"] = sort; 但是需要注意的是,如果data后面还 ...
- java 字符串转成 json 数组并且遍历
当需要把一串字符串转成一个json 数组 ,并遍历其中的内容时. 首先要导入 net.sf.json.JSONArray和net.sf.json.JSONObject 两个jar 包 String s ...
- json数组的序列化和反序列化json数组的序列化和反序列化
如题,我就不多说了,自己看代码的,很好理解 using System; using System.Collections.Generic; using System.Web; using System ...
- JSON 数组的遍历解析
刚遇到一个接接口任务,发现其中返回数据中,是个字符串数组,数组中就是单个json形式的内容,其实应该也可以称这种数据叫做json数组吧,只不过是字符串形式.而我需要的是将这种内容解析出来,取到对于ke ...
- Jquery调用Webservice传递Json数组
Jquery由于提供的$.ajax强大方法,使得其调用webservice实现异步变得简单起来,可以在页面上传递Json字符串到Webservice中,Webservice方法进行业务处理后,返回Js ...
- JSON对象与JSON数组的长度和遍历方法
JSON对象与JSON数组的长度和遍历方法 1.json对象的长度与遍历 结构:var json={“name”:”sm”,”sex”:”woman”} ...
- Js前端传递json数组至服务器端并解析的实现。
最近做的一个小项目中需要将json数组数据传递到服务器端进行保存,现分享一下解决思路. 环境:EasyUi+Mvc 4.0 如下: 在上述截图中的红色圈起来的部分,需要在点击保存后通过一次ajax请求 ...
随机推荐
- Xshell远程连接虚拟机及连接故障排查
用Xshell 远程连接虚拟机 如果按前面博客装好虚拟机,会发现刚装好的虚拟机直接连Xshell连不上,宿主机也ping不通虚拟机,这就需要修改VMware的默认网络配置 修改步骤: 1.在VMwar ...
- TCP四次挥手会经历这么多状态
TCP三次握手 中讲述了序列号和建立连接,这一篇来说说释放连接. 标志位 TCP首部中在属性标志位,和建立连接.释放连接有关,位于保留和窗口字段中间,其中三个标识与断开连接有关. ACK: ackno ...
- c#如何使用WASM跨语言调用?
介绍Wasm(WebAssembly) WebAssembly(简称Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式.Wasm被设计为编程语言的可移植编译目标,支持在web上部署客户端和服务器应用 ...
- 干了这么多年C#,后悔没早点用这种“分页”,简单/高效/易维护
[前言] 干了这么多年C#,后悔没早点用这种"分页",简单/高效/易维护,比其它的分页方式强多了,不信你自己看. [正文] 支持.Net Core(2.0及以上)与.Net Fra ...
- Web开发框架 WebBuilder 9 发布
WebBuilder 是一款强大,全面和高效的Web开发框架 .基于浏览器的集成开发环境,智能化的设计,能轻松完成常规桌面应用和面向手机等的移动应用开发.高效.稳定和可扩展的特点,适合复杂企业级应用的 ...
- 优化Redis缓存淘汰机制解决性能测试中报错率逐渐攀升问题
在某个查询场景的性能测试过程中,遇到了一个问题:测试过程中报错率逐渐攀升.进一步检查后发现,在查询业务所在应用的后台日志和平台应用的后台日志中,都出现了用户登录相关的报错信息.经过排查分析,发现了问题 ...
- 《SQL与数据库基础》21. 分库分表(一)
目录 分库分表(一) 拆分策略 垂直拆分 垂直分库 垂直分表 水平拆分 水平分库 水平分表 技术实现 MyCat概述 概念介绍 环境准备 目录介绍 MyCat入门 配置 分片配置(schema.xml ...
- Linux下MySQL备份指定数据库命令
比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# mysqldump -u root -p li ...
- 响应式编程——初识 Flux 和 Mono
by emanjusaka from https://www.emanjusaka.top/archives/4 彼岸花开可奈何 本文欢迎分享与聚合,全文转载请留下原文地址. 前言 Reactor ...
- FFmpeg中的常用结构体分析
一.前言 在学习使用FFmpeg进行编解码时,我们有必要先去熟悉FFmpeg中的常用结构体,只有对它们的含义和用途有深刻的了解,我们才能为后面的学习打下坚实的基础.所以,这篇文章将会介绍这些常用的结构 ...