我有一個對象在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是不是一個函數
我錯過了什麼?
我有一個對象在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是不是一個函數
我錯過了什麼?
我不明白你爲什麼使用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
}
在你的情況,i
變得{label: 1, value:e}
,然後從陣列移動到你的下一個對象。這些對象沒有.find
方法。相反,您可以簡單地使用i.value
來提取信息。
如果你只想以產生元素的一些的輸出,你需要先filter
它們,然後map
:
let labels = array
.filter(i => i.value === 'l')
.map(i => i.label)
;
您正在使用的地圖功能,你發現之前,請參閱在兩個功能
我相信要達到你希望的結果,你只是想使用它自己的發現。
在您的示例代碼中,i變量是數組中的對象而不是數組。
第二個代碼行是否完整?對我來說,你錯過了一個'('某處。 –
是的(缺少。我的錯誤,但錯誤仍然存在 – user7334203