typescript中将通过string数组值将对象数据进行筛选出键来
时间: 2024-10-08 11:06:37 浏览: 17
在 TypeScript 中,如果你想根据字符串数组中的键名从对象中筛选出特定的数据,你可以使用 `Array.prototype.filter()` 和对象的 `hasOwnProperty()` 或者解构赋值结合。这里是一个简单的例子:
```typescript
let obj = {
name: 'John',
age: 30,
city: 'New York'
};
const keysToKeep = ['name', 'city']; // 字符串数组
// 使用 filter() 和 hasOwnProperty()
const filteredObj = keysToKeep.reduce((filtered, key) => ({
...filtered,
[key]: obj.hasOwnProperty(key) ? obj[key] : undefined
}), {});
console.log(filteredObj); // 输出:{ name: 'John', city: 'New York' }
// 使用解构赋值
const result = keysToKeep.reduce((acc, key) => ({
...acc,
...(obj.hasOwnProperty(key) && { [key]: obj[key] })
}), {});
// 结果同样为:{ name: 'John', city: 'New York' }
```
在这个示例中,`reduce()` 函数遍历 `keysToKeep` 数组,对于每个键,如果对象 `obj` 中有该键,则将其值添加到结果对象中;如果没有,就添加一个 `undefined`。
阅读全文