【问题标题】:Trying to construct an array from a known map function试图从已知的映射函数构造一个数组
【发布时间】:2021-12-17 10:50:22
【问题描述】:

我试图构建一个docs 数组,它可以在下面的docs.maps() 函数上工作。但是,当我运行它时,我得到了

TypeError: Cannot read property 'uuid' of undefined

如果我这样做

console.log(docs[1]['_source'].uuid);

我按预期得到了2

问题

谁能弄清楚为什么地图功能不能访问uuidconsole.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


【解决方案1】:

你必须像这样构造

const docs = [{'_id': 1,'_source': {'uuid': 2,'@timestamp': 3}}];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2023-03-12
    • 2011-12-29
    • 1970-01-01
    • 2013-08-28
    • 2013-10-28
    • 2021-07-12
    相关资源
    最近更新 更多