我有一个从后端拉数组的服务冰,我需要根据 ID 从数组中获取单个项目,如何在 Angular 中执行此操作?
我正在寻找如何专门使用 angulars pipeable 运算符来做到这一点。如果没有正确完成,过滤器往往会阻止一切正常工作而不会引发错误。我可以获得行信息,但我无法定位我获得的属性
"Cannot read property 'id' of undefined"
我有一个从后端拉数组的服务冰,我需要根据 ID 从数组中获取单个项目,如何在 Angular 中执行此操作?
我正在寻找如何专门使用 angulars pipeable 运算符来做到这一点。如果没有正确完成,过滤器往往会阻止一切正常工作而不会引发错误。我可以获得行信息,但我无法定位我获得的属性
"Cannot read property 'id' of undefined"
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))
我需要根据 ID 从数组中获取单个项目
let data = yourArray.find(x => x.id == "en-gb");
或尝试 array().filter().shift()
请通过下面的讨论
this.booksByStoreID = this.books.filter(
book => book.store_id === this.store.id);
用于数组中的单个项目。
let selectedId = Array.find(a => a.id == 'fr-fr');