Поиск не является ошибкой функции

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 не является функцией

Что мне не хватает?

Теги:
find

3 ответа

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)
;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню