通过数组映射

时间:2017-12-07 21:45:37

标签: javascript arrays ecmascript-6

我有一个叫做查询的数组 我试图像这样映射它:

enquiries.map(enquiry => enquiry.firstName)

我收到以下错误:

TypeError: enquiries.map is not a function

这是console.log(查询)的输出

{enquiries: Array(2)}
  enquiries:Array(2)
  0:{_id: "5a28364d5a36f4556af34741",
     firstName: "jonny",
     surname: "rotten",
     telephoneNumber: 859937,
     gender: ""male"", …}
  1:{id: "5a283e4c5a36f4556af34742",
     firstName: "bob",
     surname: "hoskins",
     telephoneNumber: 939483948,
     gender: "male", …}

2 个答案:

答案 0 :(得分:4)

第一个{enquiries: Array(2)}表示记录的元素是包含名为enquiries的键的对象。

因此,如果您的记录变量也是enquiries,那么您需要

let firstNames = enquiries.enquiries.map(enquiry=>enquiry.firstName);

要从箭头函数返回firstName,您需要在其中使用{}return,或者完全跳过{}隐式{{ 1}}。

答案 1 :(得分:0)

嗯,你有两个原因。 首先,你的“查询”变量是一个对象(但似乎它是可迭代的,这很好!)。 作为一个对象,它的原型中没有map函数。

其次,你的箭头函数使用大括号 - 表示应该写入代码。 要使用单个值的快捷方式,您可以删除大括号或使用常规括号:

enquiries.map((enquiry) => (enquiry.firstName))

甚至:

enquiries.map(enquiry => enquiry.firstName)

因此得出结论:

Array.from(enquiries).map(enquiry => enquiry.firstName)