Как правильно отфильтровать массив в угловых
У меня есть сервисный лед, который извлекает массив из серверной части, мне нужно получить один элемент из массива на основе идентификатора, как мне это сделать в Angular?
Я ищу, как это сделать конкретно с угловыми конвейерами. Фильтр, как правило, просто останавливает работу без ошибок, если все сделано неправильно. Я могу получить информацию о строке, но я не могу настроить свойства, которые я получаю
"Cannot read property 'id' of undefined"
4 ответа
Мне нужно получить один элемент из массива на основе идентификатора
попробуй с Array.find()
let data = yourArray.find(x => x.id == "en-gb");
или попробуйте с array().filter().shift()
Пожалуйста, пройдите это обсуждение ниже
операторы трубопровода
Я не совсем уверен, что вы имеете в виду под угловыми трубными операторами. У вас есть тэг rxjs-pipeable-operator в вашем вопросе, поэтому я ожидаю, что вы имеете в виду rxjs-операторы в целом.
Поэтому я делаю предположение о том, что вы на самом деле хотите сделать. Пожалуйста, оставьте комментарий, если я не понял.
У вас есть сервис, который возвращает Observable из массива. Что-то вроде этого:
function getMyData(): Observable<any[]> {
return Observable.create(observer => {
observer.next([
{ name: 'value 1', id: 1 },
{ name: 'value 2', id: 2 },
{ name: 'value 3', id: 3 }
]);
});
}
Если вы хотите изменить значение в этом наблюдаемом потоке, вы не можете использовать фильтр или находить в потоке напрямую. Полученное вами значение является полным массивом, поэтому операция поиска выполняется для объекта массива, а не для отдельных элементов. То, что вы хотите сделать, это отобразить полученное значение и отфильтровать его в функции отображения.
getMyData()
.map((theArray: any[]) => theArray.find(item => item.id === 2))
Для одного элемента из массива.
let selectedId = Array.find(a => a.id == 'fr-fr');
this.booksByStoreID = this.books.filter(
book => book.store_id === this.store.id);
Как мне отфильтровать массив с помощью TypeScript в Angular 2?