ts中获取某个对象[]中对象的某个属性,得到一个新[],并对内容去重排序
时间: 2024-11-05 16:26:43 浏览: 49
在TypeScript (TS) 中,如果你想从数组(Array)中获取每个对象的特定属性,并基于该属性创建一个新的、去重并排序的数组,你可以这样做:
```typescript
type MyObject = {
// 假设你的对象有一个名为"name"的属性
name: string;
};
// 原始数组
const sourceArray: MyObject[] = [
{ name: 'a' },
{ name: 'b' },
{ name: 'c' },
{ name: 'a' }, // 重复项
];
// 获取 "name" 属性并过滤重复
function extractAndDeDup(arr: MyObject[]): string[] {
const uniqueNames = Array.from(new Set(arr.map(obj => obj.name)));
return uniqueNames.sort(); // 排序
}
// 使用函数处理源数组
const distinctSortedNames: string[] = extractAndDeDup(sourceArray);
console.log(distinctSortedNames);
```
在这个例子中,`extractAndDeDup` 函数首先使用 `map` 和 `Set` 来去除重复值,然后将结果转换回数组并使用 `sort` 方法对属性值进行排序。
相关问题
ts对象数组去重
可以使用`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 属性进行去重。
阅读全文