使用ts 数组对象去重
时间: 2023-02-09 10:15:43 浏览: 440
使用 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对象数组去重
可以使用Set和Array.from()方法来实现对ts对象数组的去重。
例如,假设有如下的ts对象数组:
```javascript
const tsArr = [
{ name: 'John', age: 25 },
{ name: 'Mary', age: 30 },
{ name: 'John', age: 25 },
{ name: 'Peter', age: 35 }
];
```
使用Set和Array.from()方法进行去重:
```javascript
const uniqueTsArr = Array.from(new Set(tsArr.map(JSON.stringify)), JSON.parse);
```
这段代码的作用是先将ts对象数组中的每个对象转换为JSON字符串,然后使用Set进行去重,最后使用Array.from()方法将结果转换回原来的ts对象数组格式。这种方法可以去除重复的ts对象,但是它会改变数组中对象的顺序。
如果想要保留原数组中的对象顺序,可以使用for循环和一个临时数组来实现去重:
```javascript
const tsArr = [
{ name: 'John', age: 25 },
{ name: 'Mary', age: 30 },
{ name: 'John', age: 25 },
{ name: 'Peter', age: 35 }
];
const uniqueTsArr = [];
const uniqueMap = new Map();
for (const tsObj of tsArr) {
const tsObjStr = JSON.stringify(tsObj);
if (!uniqueMap.has(tsObjStr)) {
uniqueMap.set(tsObjStr, true);
uniqueTsArr.push(tsObj);
}
}
```
这段代码的作用是使用Map来记录已经出现过的ts对象,如果没有出现过则将其放入结果数组uniqueTsArr中。这种方法可以保留原数组的对象顺序,并且可以去除重复的ts对象。
ts数组对象如何定义数据类型
在 TypeScript 中,可以使用泛型数组类型来定义数组对象的数据类型。以下是一个示例:
```typescript
// 定义一个包含字符串的数组
let myArray: Array<string> = ['hello', 'world'];
// 定义一个包含数字的数组
let myOtherArray: number[] = [1, 2, 3, 4];
```
在上面的示例中,`myArray`和`myOtherArray`分别定义为包含字符串和数字的数组对象。使用泛型数组类型可以确保数组中只包含特定类型的元素,从而提高代码的类型安全性和可读性。