在日本开发 SaaS 产品,爱猫、爱读书、爱户外

2018-04-24 js 数组去重(使用 lodash)


看上去简单的功能,其实并不简单。简单功能也需要大量测试的支持,这就是为什么 lodash 火爆的原因。

推荐一篇文章(与本文无关)https://zhuanlan.zhihu.com/p/35864087

以前 JS 代码写的少,“数组去重”功能写的也少。并没发现下面的方法有什么问题。

const arr1 = [1, 2, 3, 4, 3, 2, 1]
const arr2 = arr1.filter((item, index, arr) => arr.indexOf(item) === index)

但是,今天突然发现上面的代码无法完成对象数组的去重。

背景

对象数组进行去重。

const arra = [
  {
    id: 10010,
    name: "蒋",
  },
  {
    id: 10011,
    name: "jiang",
  },
  {
    id: 10011,
    name: "jiang",
  },
]
const newArra = data.filter((item, index, arr) => arr.indexOf(item) === index)
// newArra 和 data 一摸一样

解决方法

使用 lodash 4uniqBy 方法。

1. 安装

yarn add lodash

2. 使用

import _ from "lodash"

const newArra = _.uniqBy(data, "id")

参考: