lodash 去重数组套对象的api
时间: 2023-11-01 16:58:10 浏览: 135
在lodash库中,你可以使用`uniqBy`函数来去重数组套对象的数据。该函数接受两个参数:要去重的数组和用于比较的属性。
以下是一个使用`uniqBy`函数来去重数组套对象的示例代码:
```javascript
const _ = require('lodash');
const arr = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 1, name: 'John' },
{ id: 3, name: 'Mike' }
];
const uniqueArr = _.uniqBy(arr, 'id');
console.log(uniqueArr);
```
在上述示例中,我们使用`uniqBy`函数将数组`arr`中的对象按照`id`属性进行比较,并返回去重后的结果。
输出结果为:
```javascript
[
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 3, name: 'Mike' }
]
```
注意,这里只保留了第一个出现的具有相同id属性的对象,后续重复的对象被去除了。
希望对你有所帮助!如果还有其他问题,请随时提问。
相关问题
js将一个数组对象里面的某个属性去重保存到一个List<String>中,使用流的方式
在JavaScript中,你可以使用`Stream` API(如果是在Node.js环境下的`stream`库,或浏览器中的`ReadableStream`),配合`Set`数据结构来实现数组对象中特定属性去重并将结果存入`List<String>`。这里假设你有一个数组对象`arr`,每个元素都有一个需要去重的属性`uniqueKey`。
首先,你需要创建一个读取流,然后处理每个数组元素:
```javascript
const array = [/* your array object with uniqueKey property */];
const uniqueKeysStream = arr.pipe(
through.obj((item, enc, next) => {
// 提取需要去重的属性值
const key = item.uniqueKey;
// 使用Set检查并添加唯一键
if (!set.has(key)) {
set.add(key);
list.push(key); // 或者你可以换成更符合List接口的操作
}
next(); // 持续处理下一个元素
}, () => {} // 流结束时的回调
);
// 创建一个Set用于存储唯一键
const set = new Set();
// 创建一个空数组模拟List,实际项目中可能会用专门的List库如lodash的_.differenceBy等
const list = [];
// 运行流
uniqueKeysStream.on('data', console.log); // 打印去重后的列表
uniqueKeysStream.on('end', () => {
// 当所有元素处理完后,打印最终的结果
console.log(list);
});
```
注意,这个例子假设了`through.obj`来自`through2`模块,这是一个简单的事件驱动的管道中间件,可以创建读取或写作模式的流。在实际项目中,如果你在现代浏览器环境中,还可以考虑使用`Array.from()`和`Set`的扩散操作(`...set`)来简化代码。
阅读全文