查找不是函数错误

时间:2017-06-07 10:47:30

标签: javascript find

我在javascript中有一个对象数组,如下所示:

array=[{label: 1, value:e}, {label:1, value: i}, {label: 2, value:l}]

我希望在值为l时找到标签,所以我写了:

array.map((i) => i.find(item => item.value === 'l').label)

但是错误正在返回

  

i.find不是函数

我错过了什么?

3 个答案:

答案 0 :(得分:2)

我不明白你使用map的原因 - 根据你的问题,你只是想找到具有特定值的元素的标签,所以你需要的只是find。这很好用:

array.find(item => item.value === 'l').label

返回2

您应该处理find返回undefined的情况,例如:

var found = array.find(item => item.value === 'l')
if(found){
  var label = found.label;
  // use label
}else{
  // nothing found
}

答案 1 :(得分:1)

在您的情况下,i变为{label: 1, value:e},然后从阵列移动到您的下一个对象。这些对象没有.find方法。相反,您只需使用i.value来提取信息。

如果您只想为某些元素生成输出,则需要先filter个,然后map

let labels = array
  .filter(i => i.value === 'l')
  .map(i => i.label)
;

答案 2 :(得分:1)

您在使用之前使用地图功能,请参阅两个功能的文档

我相信你想要的结果是你想要自己使用它。

在您的示例代码中, i 变量是数组中的对象而不是数组。