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请求 ...
随机推荐
- 【python】调用钉钉机器人发起通知
有时候需要做个某些服务的状态监控,用钉钉机器人发通知挺方便的.可以用shell脚本配合crontab检测状态,检测到异常就调用python脚本发起告警. python内容 此处用的python3,需要 ...
- N1nEmAn-2023集训wp
week1 2022-12-28 WP 0x00 T1 reverse3 前几天没注意到要发wp,现在补一下.最近在学汇编,pwn题没做新的了.想到之前了解到hws的pwn会考花指令,听hjx他们说那 ...
- 使用PySpark计算AUC,KS与PSI
当特征数量或者模型数量很多的时候,使用PySpark去计算相关指标会节省很多的时间.网上关于使用PySpark计算相关指标的资料较少,这里抛砖引玉,写了三个风控常用的指标AUC,KS和PSI相关的计算 ...
- CodeForces 1324F Maximum White Subtree
题意 给定一棵\(n\)个节点的无根树,每个节点为黑色或者白色,每个点的答案为包含该点的子树(指无根子树)的白色节点数减黑色节点数的最大值 分析 对于无根树的题一般指定某一个点为根,不妨设为\(1\) ...
- Linux下MySQL备份指定数据库命令
比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# mysqldump -u root -p li ...
- 让你的HpSocket Pull支持同步(应答式)操作
什么是HPSocket HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/ ...
- 「loj - 3489」「joisc 2021 day 1」Food Court
link. 感觉好久没写过题解了, 这就是永远在骚动的得不到吧. 星尘 infinity 真的非常行, 就算是 ja voicebase 都不知道吊打那群日 v 多少圈. 我推荐你们都去听一听. ch ...
- Centos7中防火墙打开3306端口(亲测)
开放3306端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent 开启防火墙 systemctl start firewa ...
- SpringBoot2.7升级到3.0的实践分享
背景 最近把项目中的技术框架做一次升级,最重要的就是SpringBoot从2.7.x升级到3.0.x,当然还会有一些周边的框架也会连带着升级,比如Mybatis Plus,SpringCloud等,话 ...
- pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simpleLooking in indexes: https://pypi.tuna.t ...