新闻

新闻动态

良好的口碑是企业发展的动力

js数组对象去重方法

发布时间:2024-02-13 08:47:16 点击量:57
外贸网站制作

 

在JavaScript中,我们可以使用不同的方法来对数组对象进行去重。下面我将介绍几种比较常用的方法。

 

1. 使用Set数据结构

Set是ES6中引入的新的数据结构,它类似于数组,但是其成员的值都是***的。我们可以使用Set来实现数组对象的去重。

 

```javascript

let arr = [{name: 'Tom'

age: 20}

{name: 'Jerry'

age: 30}

{name: 'Tom'

age: 20}];

let uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse);

console.log(uniqueArr);

// 输出:[{name: 'Tom'

age: 20}

{name: 'Jerry'

age: 30}]

```

 

上述代码中,我们首先通过map方法将数组对象转换为字符串,然后通过Set数据结构去重,再通过Array.from方法将Set转换为数组,***通过map方法将字符串转换为对象。

 

2. 使用reduce方法

reduce方法是数组的归并方法,我们可以使用reduce方法遍历数组并利用一个新的数组来存储没有重复的对象。

 

```javascript

let arr = [{name: 'Tom'

age: 20}

{name: 'Jerry'

age: 30}

{name: 'Tom'

age: 20}];

let uniqueArr = arr.reduce((result

current) => {

let exist = result.find(item => item.name === current.name && item.age === current.age);

if (!exist) {

result.push(current);

}

return result;

}

[]);

console.log(uniqueArr);

// 输出:[{name: 'Tom'

age: 20}

{name: 'Jerry'

age: 30}]

```

 

上述代码中,我们遍历数组并查找新数组中是否已经存在相同的对象,如果不存在,则将当前对象添加到新数组中。

 

3. 使用filter方法

filter方法是数组的过滤方法,我们可以通过filter方法筛选出数组中的***对象。

 

```javascript

let arr = [{name: 'Tom'

age: 20}

{name: 'Jerry'

age: 30}

{name: 'Tom'

age: 20}];

let uniqueArr = arr.filter((value

index

array) => {

return array.findIndex(item => item.name === value.name && item.age === value.age) === index;

});

console.log(uniqueArr);

// 输出:[{name: 'Tom'

age: 20}

{name: 'Jerry'

age: 30}]

```

 

上述代码中,我们使用filter方法筛选出***次出现的对象,即找到与当前对象属性相同的***个对象。

 

4. 使用对象的属性和JSON序列化

我们可以将数组对象转换为字符串进行去重。如果对象的属性值都相同,则它们的字符串表示也是相同的。

 

```javascript

let arr = [{name: 'Tom'

age: 20}

{name: 'Jerry'

age: 30}

{name: 'Tom'

age: 20}];

let uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse);

console.log(uniqueArr);

// 输出:[{name: 'Tom'

age: 20}

{name: 'Jerry'

age: 30}]

```

 

上述代码中,我们首先通过map方法将数组对象转换为字符串,然后通过Set数据结构去重,再通过Array.from方法将Set转换为数组,***通过map方法将字符串转换为对象。

 

总结:

以上就是几种常用的方法来对数组对象进行去重的方式。使用Set数据结构是效率较高的一种方法,它可以避免使用循环判断对象相等的问题。而使用reduce、filter等方法则需要进行循环判断。在实际应用中,可以根据具体的场景选择合适的方法来进行数组对象的去重。

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:dm@cn86.cn进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。本站原创内容未经允许不得转载。