lodash对象数组去重
时间: 2024-07-10 12:01:12 浏览: 150
Lodash是一个流行的JavaScript实用工具库,提供了许多方便的方法来操作数组和对象。如果你想要从一个对象数组中去重,Lodash提供了一个名为`_.uniqBy`的方法,它可以按照指定的键(key)进行去重。
`_.uniqBy(array, [iteratee])`的基本用法如下:
- `array`: 需要去重的数组。
- `[iteratee]`: (可选) 用于计算每个元素唯一性的函数。默认情况下,使用`_.identity`,即保持元素原样。
例如,假设你有一个对象数组,每个对象有一个`id`属性,你可以这样做去重:
```javascript
const arr = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 1, name: 'John' },
{ id: 3, name: 'Alice' }
];
const uniqueArr = _.uniqBy(arr, 'id');
```
这将返回一个新的数组,其中`id`相同的对象只保留一个:
```javascript
[ { id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Alice' } ]
```
相关问题
vue js对象数组去重
在Vue.js中,可以使用一些方法来对对象数组进行去重操作。以下是一种常见的方法:
1. 使用Set数据结构:将对象数组转换为Set,然后再将Set转换回数组,这样就可以去除重复项。例如:
```javascript
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse);
console.log(uniqueArr);
```
2. 使用reduce方法:通过遍历对象数组,使用reduce方法来判断是否已存在相同的对象,如果不存在则将其添加到结果数组中。例如:
```javascript
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = arr.reduce((acc, obj) => {
let exists = acc.find(item => item.id === obj.id);
if (!exists) {
acc.push(obj);
}
return acc;
}, []);
console.log(uniqueArr);
```
3. 使用lodash库:lodash是一个常用的JavaScript工具库,它提供了许多方便的函数来处理数据。可以使用lodash中的uniqBy函数来对对象数组进行去重。例如:
```javascript
import _ from 'lodash';
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = _.uniqBy(arr, 'id');
console.log(uniqueArr);
```
lodash 去重数组套对象的api
在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属性的对象,后续重复的对象被去除了。
希望对你有所帮助!如果还有其他问题,请随时提问。
阅读全文