Javascript RXJS从流对象属性获取逗号分隔列表
我有一个可观测的物体进入它。我想从每个与过滤器匹配的对象中获取一个属性,并在所有具有我想要的单个属性的排放上创建一个逗号分隔字符串。我怎样才能做到这一点 我所尝试的:Javascript RXJS从流对象属性获取逗号分隔列表,javascript,typescript,rxjs,Javascript,Typescript,Rxjs,我有一个可观测的物体进入它。我想从每个与过滤器匹配的对象中获取一个属性,并在所有具有我想要的单个属性的排放上创建一个逗号分隔字符串。我怎样才能做到这一点 我所尝试的: data.pipe( map(item => item.map(d => d.source === "SomeSource").join(",") )) 数据类型如下:可观察 数据=[{id:2,名称:'MyName1',源代码:'SomeSource1'},{id:2
data.pipe(
map(item => item.map(d => d.source === "SomeSource").join(",")
))
数据类型如下:可观察
数据=[{id:2,名称:'MyName1',源代码:'SomeSource1'},{id:2,名称:'MyName2',源代码:'SomeSource2'},{id:3,名称:'MyName3',源代码:'SomeSource3'}]
但是,这会产生一个可观察的字符串,但我只需要以下格式的字符串:
MyName1、MyName2、MyName3
使用map不会过滤数组。此映射的结果是布尔数组
要从筛选的项目创建名称字符串,请执行以下操作:
data.pipe(map(items =>
items.filter(item => item.source === "SomeSource")
.map(item => item.name).join(",")
))
或者,您可以使用reduce
data.pipe(map(items =>
items.reduce((string, item) => {
if(item.source === "SomeSource"){
string += ` ${item.name},`
}
reutrn string
}, '')
))
使用map不会过滤数组。此映射的结果是布尔数组 要从筛选的项目创建名称字符串,请执行以下操作:
data.pipe(map(items =>
items.filter(item => item.source === "SomeSource")
.map(item => item.name).join(",")
))
或者,您可以使用reduce
data.pipe(map(items =>
items.reduce((string, item) => {
if(item.source === "SomeSource"){
string += ` ${item.name},`
}
reutrn string
}, '')
))
我认为这应该满足您的要求:
data.pipe(
map(items => items
.filter(i => i.source = "SomeSource1")
.map(i => i.name)
.join()
))
仅包含source=to提供字符串的元素filter
映射到name属性
作为逗号分隔的字符串join
工作我认为这应该满足您的要求:
data.pipe(
map(items => items
.filter(i => i.source = "SomeSource1")
.map(i => i.name)
.join()
))
仅包含source=to提供字符串的元素filter
映射到name属性
作为逗号分隔的字符串join
工作不清楚你到底想做什么。数据是一个对象数组吗?你们是想从每一个排放物中构建这个逗号分隔的字符串,还是将其组合到所有排放物中?在文章中提供了澄清。现在还不清楚你们到底想做什么。数据是一个对象数组吗?您是希望从每个排放中构建这个逗号分隔的字符串,还是将其组合到所有排放中?post.Oversight中提供了澄清。我的意思是过滤器而不是管道。我已经设置了第一个示例,我看到它应该可以工作,但无论出于什么原因,我都会返回一个可观察的,而不是一个简单的字符串。同时返回一个可观察的。如果要获取字符串,请订阅ObservableOversight。我的意思是过滤器而不是管道。我已经设置了第一个示例,我看到它应该可以工作,但无论出于什么原因,我都会返回一个可观察的,而不是一个简单的字符串。同时返回一个可观察的。如果您想获得字符串,请订阅ObservableThanks,但似乎有什么问题。过滤器不会产生预期的结果。它返回所有三个值,但只应返回匹配的源值。它只返回匹配的源值!我在stackblitz中更改了测试数据,所以它们的源代码值都是“SomeSource1”,谢谢,但似乎有什么问题。过滤器不会产生预期的结果。它返回所有三个值,但只应返回匹配的源值。它只返回匹配的源值!我在stackblitz中更改了测试数据,所以它们的源值都是“SomeSource1”