2017-06-07 156 views
1

我有一個對象在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

第二個代碼行是否完整?對我來說,你錯過了一個'('某處。 –

+0

是的(缺少。我的錯誤,但錯誤仍然存​​在 – user7334203

回答

1

我不明白你爲什麼使用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

在你的情況,i變得{label: 1, value:e},然後從陣列移動到你的下一個對象。這些對象沒有.find方法。相反,您可以簡單地使用i.value來提取信息。

如果你只想以產生元素的一些的輸出,你需要先filter它們,然後map

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