我在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不是函数
我错过了什么?
答案 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 变量是数组中的对象而不是数组。