javascript - 映射运算符返回整数作为输出,数组作为输入
问题描述
这是来自文档的示例代码。我是 RXJS 的新手,所以这可能真的很容易。
谁能解释 map 运算符在对数组进行操作后如何返回一位整数?
我检查了扫描运算符的返回值是一个从[0],[0,1],[0,1,2],[0,1,2,3] ....等增加的数组。
// RxJS v6+
import { interval } from 'rxjs';
import { scan, map, distinctUntilChanged } from 'rxjs/operators';
// Accumulate values in an array, emit random values from this array.
const scanObs = interval(1000)
.pipe(
scan((a, c) => [...a, c], []),
map(r => r[Math.floor(Math.random() * r.length)]),
distinctUntilChanged()
)
.subscribe(console.log);
解决方案
Interval 每秒发出一个递增的整数,scan 然后将该整数添加到一个数组中,然后 map 拉出该数组的一个随机元素, distinctUntilChanged 阻止它连续两次发出相同的数字。一种更有效的方法来获得一个随机数,其中最大可能的数字每次增加一将更有效
const { interval } = rxjs;
const { map, distinctUntilChanged } = rxjs.operators;
interval(1000).pipe(
map(i => Math.ceil(Math.random() * i)),
distinctUntilChanged()
).subscribe(val => { console.log(val); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>
无需将所有先前的值存储在数组中。
推荐阅读
- javascript - 如果有办法做背景尺寸:覆盖并仍然能够滚动图像
- java - 如何检测演员播放完毕?
- python - 无法使用瓶颈包计算移动平均值-python
- matlab - 通过施加条件删除特定行
- sql - 如何在 SQL 中使用 LIKE 子句及其通配符函数将单个条件/参数组合为一个条件/参数?
- ios - IOS TableView第一个单元格图像应该从状态栏开始
- powershell - 函数中的switch语句
- python - 如何使用 Python 将 .docx 文件上传到我的 GoogleDrive?
- delphi - ShowMessage 有效,但 application.messagebox 无效
- swift - 如何修复“imagePickerController”无法选择照片?