【发布时间】:2021-03-15 21:47:34
【问题描述】:
我正在将一个对象转换为一个数组,但 TypeScript 抛出错误:
“类型‘未知’上不存在属性‘地图’”
(是的,我用谷歌搜索了那个错误,但网上没有很清楚)
在这个现场演示中,您不会看到 TypeScript 错误,但在我的 Angular 应用程序中我可以看到它并且它会导致问题。
如何使用 Lodash 或 JavaScript 将此对象转换为我的现场演示中显示的相同数组?
这是代码:
dataObject = {
A: [
{id: 1, name: 'Mike', lastname: 'asmith'},
{id: 2, name: 'Mary', lastname: 'alters'},
{id: 3, name: 'Boris', lastname: 'al'}
],
B: [
{id: 1, name: 'Lauren', lastname: 'bmith'},
{id: 2, name: 'Travis', lastname: 'balters'},
{id: 3, name: 'Barn', lastname: 'bl'}
],
...
}
dataObjectDisp = Object.entries(this.dataObject).reduce((prev, [key, value]) =>{
return [...prev, ...value.map((user, index) => ({
...user, parent: key, index }))]
}, []);
这是我想要的输出:
[
{
"id": 1,
"name": "Mike",
"lastname": "asmith",
"parent": "A",
"index": 0
},
{
"id": 2,
"name": "Mary",
"lastname": "alters",
"parent": "A",
"index": 1
},
...
]
【问题讨论】:
-
你的 ES 版本是多少?检查您是否拥有 ES2017,因为它是在同一版本中引入的。
-
value 是对象的类型,map 只有在它是一个数组时才可用。
-
尝试将类型添加到
value。将[key, value]更改为[key, value]: [string, Array<{ id: number; name: string; lastname: string; }>]
标签: javascript angular typescript lodash