ts对象数组去重
时间: 2023-06-21 21:05:50 浏览: 140
可以使用`Set`数据结构来进行数组去重。具体操作如下:
```typescript
interface Person {
name: string;
age: number;
}
const persons: Person[] = [
{ name: "Alice", age: 20 },
{ name: "Bob", age: 22 },
{ name: "Alice", age: 20 },
{ name: "Charlie", age: 25 },
];
const uniquePersons = Array.from(new Set(persons.map((p) => JSON.stringify(p)))).map(
(p) => JSON.parse(p)
);
console.log(uniquePersons);
// Output: [{ name: "Alice", age: 20 }, { name: "Bob", age: 22 }, { name: "Charlie", age: 25 }]
```
上述代码中,首先使用`map`将对象数组转化为字符串数组,再使用`Set`去重,最后再将字符串转回对象。注意,这里对对象进行了序列化和反序列化,因此对于对象的属性顺序敏感。如果需要忽略属性顺序,则需要使用其他方式进行去重。
相关问题
使用ts 数组对象去重
使用 JavaScript 的 Set 对象可以很方便地去重数组对象。Set 对象具有去重功能,可以将数组对象转换为 Set 对象,再将 Set 对象转换回数组对象。代码如下:
```
let arr = [{id: 1}, {id: 2}, {id: 1}, {id: 3}];
let set = new Set(arr);
let newArr = Array.from(set);
```
其中,arr 是需要去重的数组对象,set 是去重后的 Set 对象,newArr 是去重后的数组对象。
注意:如果对象是对象的话这种方式不能去重,需要利用对象的某个属性进行去重。
```
let arr = [{id: 1,name:"a"}, {id: 2,name:"b"}, {id: 1,name:"c"}, {id: 3,name:"d"}];
let newArr = Array.from(new Set(arr.map(item => item.id))).map(id => {
return arr.find(item => item.id === id)
});
```
上面的代码就是通过 id 属性进行去重。
ts 里 object[] 去重
在 TypeScript 中,如果想要对数组中的对象进行去重,可以使用以下方法:
1. 使用 Set 和 JSON.stringify
```typescript
const arr = [
{ id: 1, name: "John" },
{ id: 2, name: "Jane" },
{ id: 1, name: "John" },
{ id: 3, name: "Bob" }
];
const uniqueArr = Array.from(new Set(arr.map(obj => JSON.stringify(obj))))
.map(str => JSON.parse(str));
console.log(uniqueArr);
// Output: [{ id: 1, name: "John" }, { id: 2, name: "Jane" }, { id: 3, name: "Bob" }]
```
2. 使用 filter 和 findIndex
```typescript
const arr = [
{ id: 1, name: "John" },
{ id: 2, name: "Jane" },
{ id: 1, name: "John" },
{ id: 3, name: "Bob" }
];
const uniqueArr = arr.filter((obj, index, self) =>
index === self.findIndex(o => o.id === obj.id && o.name === obj.name)
);
console.log(uniqueArr);
// Output: [{ id: 1, name: "John" }, { id: 2, name: "Jane" }, { id: 3, name: "Bob" }]
```
这些方法将根据对象的属性进行去重操作。根据具体需求选择适合的方法即可。请注意,如果对象属性值是引用类型,需要根据实际情况来判断是否需要进行深度比较。
阅读全文