@Denioo

Как искать в массиве js по id?

Есть массив в js или объект, в нем хранятся данные на подобии такого: id="...", name="....". Т.е. у каждого имени есть свой id. Я хочу найди имя по id, т.е. у меня известно id и мне нужно получается найти имя по этому id. Я делаю вот такую конструкцию:
if (vm.filter.roleId != null) {
						vm.roles.findIndex(name);// знаю тут ошибка но не знаю как ее изменить
					}

Но не работает, подскажите какую конструкцию использовать.
  • Вопрос задан
  • 1748 просмотров
Решения вопроса 3
@titelhalter
findIndex ждет функцию в качестве параметра. Если в массиве мы ищем индекс элемента, у которого поле name совпадает со значением в переменной name, то нужно
vm.roles.findIndex(item => item.name == name)
Ответ написан
Комментировать
@Frontline_tz
const newArray = vm.roles.filter((item: {name: string}) => item.name === 'SOME NAME STRING');


если я правильно понял то можно реализовать таким образом, то есть в метод .filter() передаем функцию, с типизацией, где указываем что у нас в объекте есть поле name: string, ну и потом что бы функция фильтр внесла элемент в новый массив мы должны в переданной функции вернуть булево значение, то есть true/false, если будет true то элемента удовлетворяет текущим параметрам и будет добавлен в новый массив и наоборот
Ответ написан
Комментировать
hzzzzl
@hzzzzl
const role = vm.roles.find(r => r.id === roleId)
const name = role ? role.name : undefined  // если не найдет по айдишнику, то role будет undefined
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы