前言
在前端开发中,我们常常需要去重数组或者对象数组,以便后续的业务操作。JavaScript 中提供了 Set
数据结构,可以方便地对基本类型数组去重,但对于对象数组需要进行一些处理才能去重。本文介绍一个可以方便地去重对象数组的 npm 包 jsttd-uniq
。
安装
在项目根目录中执行以下命令进行安装:
npm install jsttd-uniq
使用方法
-- -------------------- ---- ------- ------ ---- ---- ------------- ----- ---- - --- -- -- --- ----- ---- - ---- --- --- --- --- ---- ----- ---- - ---- --- --- --- --- ---- ------------------------ -- --- -- -- ---------------------- ------ -- ---- --- --- --- ---------------------- ----- ------- -- ---- --- --- --- --- ---
uniq
接收两个参数:一个数组,一个可选的属性数组或属性字符串。当传入字符串时,将只对对象数组的该属性进行去重。
特性
jsttd-uniq
可以方便地对对象数组进行去重,并且支持多属性去重。
单属性去重
const arr = [{a: 1}, {a: 2}, {a: 1}]; console.log(uniq(arr, 'a')); // [{a: 1}, {a: 2}]
多属性去重
const arr = [{a: 1, b: 2}, {a: 2, b: 1}, {a: 1, b: 2}]; console.log(uniq(arr, ['a', 'b'])); // [{a: 1, b: 2}, {a: 2, b: 1}]
循环引用去重
const arr = [{a: 1}, {a: 2}, {a: 1}]; arr[2].b = arr[0]; console.log(uniq(arr)); // [{a: 1}, {a: 2}]
总结
jsttd-uniq
可以方便地对对象数组进行去重,是前端开发中常用的工具之一。它可以避免我们写繁琐的去重代码,提高开发效率。在使用时需要注意属性的传参方式和循环引用的情况,同时建议阅读源代码以深入理解其实现原理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600668f8d9381d61a3540f7c