【发布时间】:2021-12-17 10:50:22
【问题描述】:
我试图构建一个docs 数组,它可以在下面的docs.maps() 函数上工作。但是,当我运行它时,我得到了
TypeError: Cannot read property 'uuid' of undefined
如果我这样做
console.log(docs[1]['_source'].uuid);
我按预期得到了2。
问题
谁能弄清楚为什么地图功能不能访问uuid而console.log()可以?
const docs = [{'_id': 1},{'_source': {'uuid': 2}},{'_source': {'@timestamp': 3}}];
const description = dedent`
================================================
${
docs.map((element) => [
`Log entry ID: ${element['_id']}`,
`UUID: ${element['_source'].uuid}`,
`Timestamp: ${element['_source']['@timestamp']}\n`,
].join('\n')).join('--------------------\n')
}
`;
console.log(description);
【问题讨论】:
-
_id和_source属性位于数组的不同元素中。 -
重点是不同的元素有不同的key。所以你不能访问
map()中的所有相同的键。 -
当
map()尝试访问第一个元素上缺少的_source.uuid时,您会收到错误消息。 -
我不知道这个数据代表什么。如果对象不同,您为什么希望能够映射它?
-
我认为您应该查看地图的工作原理。它作用于集合的每个成员。
标签: javascript node.js arrays ecmascript-6