我有一个对象数组,每个对象具有相同的2个参数:contentId
和data
。
[
{
contentId: 12343,
data: 'a bunch of data'
},
...
]
我的RXJS observable使用以下代码很好地返回对象。
this.$bcc = this.bccService.getBcc().pipe(
map(data => data.find(obj => obj.contentId == 12343)), // returns the matching object
// map(data => data.find(obj => obj.contentId == 12343)['data']), // undefined
);
但是,如何最好地指定匹配对象的data
参数值?
答案 0 :(得分:0)
. syntax
或key syntax
都可以,因此您可以使用:
data.find(item => item.contentId === 12343).data;
data.find(item => item.contentId === 12343)['data'];
我猜不相关,但不清楚为什么管道中存在map
?
const data = [
{
contentId: 12343,
data: 'a bunch of data'
},
{
contentId: 45678,
data: 'a bunch of data'
},
]
console.log(data.find(item => item.contentId === 12343).data);
console.log(data.find(item => item.contentId === 12343)['data']);
更新
再次查看问题之后,语法就不成问题了。我看到的是您正在第一个覆盖数据值的映射中设置data属性。请尝试如下:
this.$bcc = this.bccService.getBcc().pipe(
map(data => data.find(obj => obj.contentId == 12343)), // returns the matching object
map(data => data.propertyInData), // at this point data is {contentId:12343,data: 'a bunch of data'
},
);