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'))

结果:

 

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/yingzi1028/p/16410031.html

Spring自定义解析的集中方式-编程思维

springMVC 、springboot中返回前端JSON 时候,经常需要不同的格式 实现方式有几种   一 、自己实现JSON序列化器   序列化对象上使用public class TopSymbolVo implements Serializable { @JsonSerialize(using = B

几百行代码实现一个 json 解析器_crossoverjie-编程思维

前言 之前在写 gscript时我就在想有没有利用编译原理实现一个更实际工具?毕竟真写一个语言的难度不低,并且也很难真的应用起来。 一次无意间看到有人提起 JSON 解析器,这类工具充斥着我们的日常开发,运用非常广泛。 以前我也有思考过它是如何实现的,过程中一旦和编译原理扯上关系就不由自主的劝退了;但经过这段时间的实践

超详细讲解H5移动端适配-编程思维

前言 移动互联网发展至今,各种移动设备应运而生,但它们的物理分辨率可以说是五花八门,一般情况UI会为我们提供375尺寸的设计稿,所以为了让H5页面能够在这些不同的设备上尽量表现的一致,前端工程师就不得不对页面进行移动端适配了。 「如果这篇文章有帮助到你,❤️关注+点赞❤️鼓励一下作者,文章公众号首发,关注 前端南玖 第

bat及各大互联网公司2014前端笔试面试题--html,css篇_chokcoco-编程思维

  很多面试题是我自己面试BAT亲身经历碰到的。整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是大有裨益。   而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正。   前面几题是会很基础,越下越有深度。   附上第一篇:BAT及各大互联