前端对象数组去重reduce

作者: 我才不要你管呐 | 来源:发表于2020-04-14 19:10 被阅读0次

说起前端去重,对es6比较熟悉的就会想到 set 方法

set去重方法

let arr = [1,2,2,3,5,3,6,5]
let arrSet = Array.from(new Set(arr))// Array.from将Set结构转换成数组
console.log(arrSet) // [1,2,3,5,6]

可以看到,set方法去重只能针对普通的数组进行去重。当需求是对一个对象数组去重时,至今为止我找到的最好的办法就是用reduce.

使用方法

let result = [{"text":"55 法务类","value":"55"},
              {"text":"63 成本类","value":"63"},
              {"text":"63 成本类","value":"63"},
              {"text":"64 财务类","value":"64"},
              {"text":"67 战投类","value":"67"}]
let obj = {}
result = result.reduce((cur, next) => {
    //当对象里没有所传属性时,给属性true并PUSH数组
    obj[next.value] ? '' : (obj[next.value] = true && cur.push(next))
    return cur
}, [])
// 这里得到的result就是我们想要的
[{"text":"55 法务类","value":"55"},
 {"text":"63 成本类","value":"63"},
 {"text":"64 财务类","value":"64"},
 {"text":"67 战投类","value":"67"}]

关于reduce

完整的reduce方法

array.reduce(function(accumulator, currentValue, currentIndex, array), initialValue)

reduce有两个参数

1.第一个是函数,必须有返回值,函数有四个参数,分别为

accumulator 累加器,即函数上一次调用的返回值。第一次的时候为 initialValue || arr[0]
currentValue 数组中函数正在处理的的值。第一次的时候initialValue || arr[1]
currentIndex 数组中函数正在处理的的索引
array 函数调用的数组

  1. initValue 第二个参数为可选参数,累加器的初始值。

相关文章

  • 前端对象数组去重reduce

    说起前端去重,对es6比较熟悉的就会想到 set 方法 set去重方法 可以看到,set方法去重只能针对普通的数...

  • js reduce去重用法

    reduce不仅仅可以数据累加,还可以实现去重效果。 重复次数计算 数组去重 数组对象去重,转为数组 对象去重

  • reduce数组去重-对象数组

    对于简单数组去重方法非常多,项目需求中多用到对象数组利用reduce数组方法比较简单historyType/dat...

  • reduce 对象数组去重

    reduce 对象数组去重: 解析:其实就是用 obj 来存储已经放入新数组的元素,每次遍历旧数组都去 obj 中...

  • js中数组对象去重的方法

    采用数组中的reduce方法,遍历数组,也是通过对象访问属性的方法 参考js中数组对象去重的方法

  • 数组对象去重之reduce

    需求: 有一个对象数组需要根据里面的几项进行去重和其他操作; 方法:用reduce 在其每一次循环的时候,匹配累计...

  • 工具方法

    对象数组如何去重: reduce 实现对象数组去重复: 实现一个函数判断数据类型: 查找字符串中出现最多的字符和个...

  • 数组去重

    使用set进行简单去重 使用reduce进行复杂数组去重

  • 数组的相对高阶方法使用

    1.js根据数组中对象的某个属性值进行去重 2.reduce方法介绍 [https://www.teaspect....

  • 对象数组去重的简便方法reduce()

网友评论

    本文标题:前端对象数组去重reduce

    本文链接:https://www.haomeiwen.com/subject/fgfxvhtx.html