js数组对象set去重
时间: 2023-12-09 11:33:34 浏览: 93
可以使用 Set 对数组对象进行去重。具体实现方法如下:
```
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Charlie'}];let set = new Set(arr.map(item => item.id));
let result = Array.from(set).map(id => arr.find(item => item.id === id));
```
上述代码中,首先使用 map() 函数遍历数组对象,将对象的 id 属性提取出来,然后使用 Set 对 id 数组进行去重。最后使用 map() 函数遍历去重后的 id 数组,通过 find() 函数找到对应的对象,最终得到一个去重后的新数组 result。
相关问题
js数组对象属性去重
在JavaScript中,数组对象属性去重可以采用多种方法,这里列举几种常见的:
1. **Set数据结构**:
使用Set集合,因为Set不允许有重复元素。首先将数组转换为Set,然后再转回数组即可实现去重:
```javascript
let arr = [...new Set(arr)];
```
2. **双重循环**:
利用两个嵌套循环,检查每个元素是否已经在新数组中,如果未找到则添加:
```javascript
let uniqueArr = [];
for(let i = 0; i < arr.length; i++) {
if(uniqueArr.indexOf(arr[i]) === -1) {
uniqueArr.push(arr[i]);
}
}
```
3. **filter方法**:
通过filter函数配合indexOf或者includes方法,过滤出不存在于其他位置的新数组:
```javascript
let uniqueArr = arr.filter((value, index, self) => {
return self.indexOf(value) === index;
});
```
4. **reduce方法**:
利用reduce方法迭代数组,并检查当前元素是否已经存在于结果数组中:
```javascript
let uniqueArr = arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []);
```
5. **利用Map或JSON.stringify**:
如果允许稍微复杂的操作,还可以用Map存储数组元素,Map键值对不能重复,然后转化为数组:
```javascript
let uniqueArr = Array.from(new Map(arr.map(JSON.stringify)));
```
js数组对象reduce去重
JavaScript中的`Array.prototype.reduce()`方法主要用于将数组中的元素通过指定的函数累加求和、合并等操作,并返回单个结果。如果你想要使用它来去除数组中的重复元素,通常需要结合其他数据结构,如Set或者借助于额外的迭代过程。
一个常见的做法是创建一个新的空数组,然后对原数组应用`reduce()`,在累加过程中检查新值是否已经存在于新数组中,如果不存在则添加:
```javascript
function uniqueReduce(arr) {
return arr.reduce((result, item) => {
if (!result.includes(item)) {
result.push(item);
}
return result;
}, []);
}
let array = [1, 2, 2, 3, 3, 3];
let uniqueArray = uniqueReduce(array);
console.log(uniqueArray); // 输出:[1, 2, 3]
```
在这个例子中,`reduce`的回调函数会遍历数组,每次检查当前元素是否已经在结果(`result`)中,如果没有,则将其添加到结果里,最终得到一个无重复元素的新数组。
阅读全文