当前位置: 首页 > 知识库问答 >
问题:

javascript - 想要使用:rxjs 对流里面的元素进行操作(找出偶数,并且乘以2),为何不生效呢?

洪雨石
2024-09-11

想要使用:rxjs 对流里面的元素进行操作(找出偶数,并且乘以2)

import {  of } from 'rxjs';
import {  map, filter } from 'rxjs/operators';



const e = of([1,2,3,4,5])
e.pipe(
  filter(item => item % 2 === 0),
  map(num => num * 2)
).subscribe(v => console.log(v))

但是打印的时候并没有任何数据,请问是代码写的有误吗?

共有3个答案

孟乐
2024-09-11

of接受多个参数 你只传入了一个数组 流出的只是一个完整的数组 of(1,2,3,4,5,6)

逑兴安
2024-09-11

可以看看 AI 的参考答案,把 of 改为 from

姜胤
2024-09-11

代码确实存在错误,主要问题在于你正在对一个数组而不是单个元素应用 filtermap 操作符。在 RxJS 中,当你使用 of 操作符时,它会将数组 [1,2,3,4,5] 当作一个单独的、完整的数组对象来发射,而不是作为单个数字发射。因此,filter 操作符接收到的是一个数组对象,而不是数组中的每个元素,且由于数组对象本身不是偶数,所以 filter 条件不会通过。

为了修复这个问题,你应该使用 from 而不是 of 来将数组转换为流中的单个元素,每个元素依次发射。以下是修改后的代码:

import { from } from 'rxjs';
import { filter, map } from 'rxjs/operators';

const e = from([1, 2, 3, 4, 5]);
e.pipe(
  filter(item => item % 2 === 0),
  map(num => num * 2)
).subscribe(v => console.log(v));

这样,from 会将数组 [1, 2, 3, 4, 5] 转换为一个 Observable,该 Observable 会依次发射数组中的每个元素(1, 2, 3, 4, 5)。然后,filtermap 操作符会分别作用于这些单独发射的元素上,从而实现找出偶数并乘以2的逻辑。最后,你会在控制台看到 48 被打印出来。

 类似资料:
  • 本文向大家介绍javascript实现对表格元素进行排序操作,包括了javascript实现对表格元素进行排序操作的使用技巧和注意事项,需要的朋友参考一下 我们在上网中都能看到很多能够排序的,如大小、时间、价格等 现在我们也试一下排序功能: 排序的函数代码:里面含有点击之后排序--还原,和排升序和降序。 设置表格的背景颜色代码,导入的css: css代码: 效果图-----排序之前: 升序: 降序

  • 问题内容: 我想使用Python比较列表中的每个可能的对。 假设我有 我想对列表中2个元素的每个组合进行操作(我们称其为foo)。 最终结果应与 我的第一个想法是手动遍历列表两次,但这似乎不是很Python。 问题答案: 在模块中签出。它完全符合您的描述。 这等效于: 编辑: 有两个非常相似的功能,以及,和。为了说明它们之间的区别: 生成所有可能的元素对,包括所有重复项: 生成每个唯一元素对的所有

  • 本文向大家介绍使用 JavaScript 对数组元素进行深度计数,包括了使用 JavaScript 对数组元素进行深度计数的使用技巧和注意事项,需要的朋友参考一下 问题 我们需要编写一个JavaScript函数,该函数接受元素的嵌套数组并返回该数组中存在的元素的深层计数。 输入 输出 由于级别1的元素为2,级别2的元素为2,级别3的元素为1,因此深度计数为7。 示例 以下是代码- 代码说明 我们使

  • 我在一个页面上有三个SVG图像。一个是“图像编辑器”,你可以输入一些文本,一个图标,拖动和左右缩放,等等。 另外两个SVG通过use元素使用来自顶部SVG的内容,并显示最终结果的预览。 当我在编辑器中编辑一些东西时,这两个预览会自动更新。很完美.但我不想在底部两个预览SVG中显示边界框、转换工具、指南等。 有没有一种方法可以对那些SVG的(阴影)DOM进行样式化(CSS)或操作(JS)以不显示这些

  • 本文向大家介绍javascript动态判断html元素并执行不同的操作,包括了javascript动态判断html元素并执行不同的操作的使用技巧和注意事项,需要的朋友参考一下 在javascript中为了针对不同的元素执行不同的操作,需要在javascript中对触发事件的元素进行判断,然后执行不同的操作。 例子: html javascript 获取input的name和id属性都不成功,但是v

  • 我有两个数字列表,我想找到所有可能的数字对。例如,给定列表和时,结果应为: 我知道我可以使用for循环来完成这件事,但是有没有更简洁的方法来使用Java8流来完成这件事呢? 我尝试了以下操作,但由于我得到的是而不是而错过了一些内容。