как правильно отфильтровать массив в угловых - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть сервисный лед, который извлекает массив из серверной части, мне нужно получить один элемент из массива на основе идентификатора, как мне это сделать в Angular?

enter image description here

Я ищу, как это сделать конкретно с угловыми конвейерами. Фильтр, как правило, просто останавливает работу без ошибок, если все сделано неправильно. Я могу получить информацию о строке, но я не могу настроить свойства, которые я получаю "Cannot read property 'id' of undefined"

Ответы [ 4 ]

0 голосов
/ 24 апреля 2018

angulars pipeable операторы

Я не совсем уверен, что вы подразумеваете под angulars pipeable операторами.У вас есть тег 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))
0 голосов
/ 24 апреля 2018
 this.booksByStoreID = this.books.filter(
      book => book.store_id === this.store.id);

Как отфильтровать массив с помощью TypeScript в Angular 2?

0 голосов
/ 24 апреля 2018

для одного элемента из массива.

let selectedId = Array.find(a => a.id == 'fr-fr');
0 голосов
/ 24 апреля 2018

Мне нужно получить один элемент из массива на основе идентификатора

попробуйте с Array.find()

let data = yourArray.find(x => x.id == "en-gb");

или попробуйте с array().filter().shift()

Пожалуйста, пройдите через обсуждение ниже

Разница между find () и filter (). Shift () в JavaScript

...