-2

我有一个从后端拉数组的服务冰,我需要根据 ID 从数组中获取单个项目,如何在 Angular 中执行此操作?

在此处输入图像描述

我正在寻找如何专门使用 angulars pipeable 运算符来做到这一点。如果没有正确完成,过滤器往往会阻止一切正常工作而不会引发错误。我可以获得行信息,但我无法定位我获得的属性"Cannot read property 'id' of undefined"

4

4 回答 4

1

angulars 管道运算符

我不完全确定您所说的 angulars pipeable 运算符是什么意思。您的问题中有标签 rxjs-pipeable-operators ,所以我希望您指的是一般的 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))
于 2018-04-24T13:46:47.290 回答
0

我需要根据 ID 从数组中获取单个项目

尝试Array.find()

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

或尝试 array().filter().shift()

请通过下面的讨论

javascript 上 find() 和 filter().shift() 的区别

于 2018-04-24T13:00:04.660 回答
0
 this.booksByStoreID = this.books.filter(
      book => book.store_id === this.store.id);

如何在 Angular 2 中使用 TypeScript 过滤数组?

于 2018-04-24T13:01:52.103 回答
0

用于数组中的单个项目。

let selectedId = Array.find(a => a.id == 'fr-fr');
于 2018-04-24T13:23:58.317 回答