Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RXJS从流对象属性获取逗号分隔列表_Javascript_Typescript_Rxjs - Fatal编程技术网

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()
))
  • filter
    仅包含source=to提供字符串的元素
  • 映射到name属性
  • join
    作为逗号分隔的字符串

工作

我认为这应该满足您的要求:

data.pipe(
  map(items => items
    .filter(i => i.source = "SomeSource1")
    .map(i => i.name)
    .join()
))
  • filter
    仅包含source=to提供字符串的元素
  • 映射到name属性
  • join
    作为逗号分隔的字符串

工作

不清楚你到底想做什么。数据是一个对象数组吗?你们是想从每一个排放物中构建这个逗号分隔的字符串,还是将其组合到所有排放物中?在文章中提供了澄清。现在还不清楚你们到底想做什么。数据是一个对象数组吗?您是希望从每个排放中构建这个逗号分隔的字符串,还是将其组合到所有排放中?post.Oversight中提供了澄清。我的意思是过滤器而不是管道。我已经设置了第一个示例,我看到它应该可以工作,但无论出于什么原因,我都会返回一个可观察的,而不是一个简单的字符串。同时返回一个可观察的。如果要获取字符串,请订阅ObservableOversight。我的意思是过滤器而不是管道。我已经设置了第一个示例,我看到它应该可以工作,但无论出于什么原因,我都会返回一个可观察的,而不是一个简单的字符串。同时返回一个可观察的。如果您想获得字符串,请订阅ObservableThanks,但似乎有什么问题。过滤器不会产生预期的结果。它返回所有三个值,但只应返回匹配的源值。它只返回匹配的源值!我在stackblitz中更改了测试数据,所以它们的源代码值都是“SomeSource1”,谢谢,但似乎有什么问题。过滤器不会产生预期的结果。它返回所有三个值,但只应返回匹配的源值。它只返回匹配的源值!我在stackblitz中更改了测试数据,所以它们的源值都是“SomeSource1”