ts遍历数组将数组转成map并附上相应键
时间: 2023-07-31 16:13:34 浏览: 122
你可以使用 TypeScript 中的 `reduce` 方法将一个数组转换成 Map,并且为每个元素附上相应的键。具体的实现可以参考以下代码:
```typescript
interface Item {
id: number;
name: string;
}
const items: Item[] = [
{ id: 1, name: 'apple' },
{ id: 2, name: 'banana' },
{ id: 3, name: 'orange' },
];
const itemMap = items.reduce((map, item) => {
map.set(item.id, item);
return map;
}, new Map<number, Item>());
console.log(itemMap);
```
上述代码中,我们首先定义了一个 `Item` 接口,表示数组中的元素类型。然后我们创建了一个 `items` 数组,包含了三个元素。接着我们使用 `reduce` 方法,将 `items` 数组转换成了一个 `Map` 对象。在 `reduce` 方法的回调函数中,我们将元素的 `id` 作为键,将整个元素对象作为值,添加到了 `map` 对象中。最终我们输出了 `itemMap` 对象,包含了三个键值对,分别为 1: { id: 1, name: 'apple' },2: { id: 2, name: 'banana' },3: { id: 3, name: 'orange' }。
需要注意的是,我们在 `reduce` 方法的第二个参数中传入了一个空的 `Map` 对象,作为初始值。这是因为 `reduce` 方法会将每次执行回调函数的结果传递给下一次执行回调函数的参数 `map`,如果不传入初始值,则第一次执行回调函数时 `map` 参数的类型会被推断为 `Item[]`,而不是 `Map<number, Item>`,这样会导致错误。
阅读全文