У меня есть массив объектов в 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)
;