转化类操作符:map、mapTo和pluck

article/2025/8/28 12:45:45

map介绍:

import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/map';// 第一种
const source$ = Observable.of(3, 1, 4);
const mapFunc = function(value, index) { return `${value} ${this.separator} ${index}`;
};
const context = {separator: ':'};
const result$ = source$.map(mapFunc, context);
result$.subscribe(console.log,null,() => console.log('complete')
);// 解释说明:mapFunc这个函数是map的第一个参数,充当project的功能,同时,map还有第二个参数context对象,如果用上这个参数,那么mapFunc在每次执行的时候,this就是map的这个参数context,所以,在mapFunc中this.separator的值就是冒号(:)// 第二种
const source$ = Observable.of(3, 1, 4);
const context = {separator: ':'};
const mapFunc = (function (separator) {return function(value, index) {return `${value} ${separator} ${index}`;};
})(context.separator)
const result$ = source$.map(mapFunc);
result$.subscribe(console.log,null,() => console.log('complete')
);// 解释说明:并不建议使用第一种方式,按照函数式编程的原则,应该尽量让函数成为纯函数,如果一个函数的执行依赖于this,那么就难以预料这个函数的执行结果,并不是什么好事。所以,我们知道map有这个功能,但要尽量避免使用它
// 利用一个立即执行的函数产生一个新的函数mapFunc,这样既定制了mapFunc中使用的separator,又保持了函数体内代码的纯洁

运行结果:

map源码介绍:

var map_1 = require('../operators/map');function map(project, thisArg) {return map_1.map(project, thisArg)(this);
}// map_1
export declare function map<T, R>(this: Observable<T>, project: (value: T, index: number) => R, thisArg?: any): Observable<R>;

 mapTo介绍:

import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/mapTo';// import 'rxjs/add/operator/map';const source$ = Observable.of(3, 1, 4);
// 使用mapTo
const result$ = source$.mapTo('ABC');// 使用map
// const result$ = source$.map(() => 'ABC');result$.subscribe(console.log,null,() => console.log('complete')
);

运行结果:

mapTo源码介绍:

Observable.prototype.mapTo = function (value) {return this.map(x => value);
};

pluck介绍:

import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/pluck';const source$ = Observable.of({name: 'RxJS', version: 'v4'},{name: 'React', version: 'v15'},{name: 'React', version: 'v16'},{name: 'RxJS', version: 'v5'}
);
const result$ = source$.pluck('name');
result$.subscribe(console.log,null,() => console.log('complete')
);

运行结果:

pluck源码介绍:

var pluck_1 = require('../operators/pluck');function pluck() {var properties = [];for (var _i = 0; _i < arguments.length; _i++) {properties[_i - 0] = arguments[_i];}return pluck_1.pluck.apply(void 0, properties)(this);
}// pluck_1
export declare function pluck<T, R>(this: Observable<T>, ...properties: string[]): Observable<R>;

 pluck优点:能够自动处理获取不存在的字段,返回undefined。如使用map,将抛出一个错误:throw new TypeError。。。。

import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/pluck';const source$ = Observable.of({name: 'RxJS', version: 'v4'},{name: 'React', version: 'v15'},{name: 'React', version: 'v16'},{name: 'RxJS', version: 'v5'}
);
const result$ = source$.pluck('age');
result$.subscribe(console.log,null,() => console.log('complete')
);

运行结果:

 从以上demo可以看到:map是映射操作之母,mapTo和pluck都可以基于map实现。


http://chatgpt.dhexx.cn/article/3g8AncoQ.shtml

相关文章

VulnHub - Pluck靶机

VulnHub - Pluck靶机 arp-scan -l 探测靶机地址 nmap -sV -Pn -A x.x.x.230 dirb http://x.x.x.230 扫描目录 发现index.php 目录下存在文件包含漏洞 直接修改page参数&#xff0c;经几次修改&#xff0c;发现可读本地文件../../../etc/passwd 从上图看到passwd文件最下方有个b…

Pluck Cms文件上传结合命令执行复现

本漏洞影响 Pluck CMS Pluck CMS <4.7.10 部分解释来自零组文库 安装模版文件包含导致任意命令执行 很多CMS都会在安装模版的时候getshell&#xff0c;那么这里笔者也发现了类似的漏洞。 在阅读自己下载下来得源码之后看到 目录下有.htaccess文件&#xff0c;直接把php设置…

春秋云境:CVE-2022-26965(后台RCE)

目录 一、题目 二、 利用cms主题构造木马 一、题目 介绍&#xff1a; Pluck-CMS-Pluck-4.7.16 后台RCE 进入题目&#xff1a; cms页面 点击admin进行登录&#xff1a; 弱口令admin登录&#xff1a; 成功登录进去&#xff1a; 国产化一下&#xff1a; 选项---选择主题 点击…

春秋云境系列靶场记录(合集)-不再更新

春秋云境系列靶场记录 春秋云境系列靶场记录合集&#xff0c;不更新了哈~~~ 2023/1/17日记 感谢各位朋友的关注&#xff0c;2022年11月到12月&#xff0c;利用空闲时间做了春秋云镜的靶场&#xff0c;因为穷&#xff0c;所以也只能做免费的&#xff08;当然还有个原因就是我太…

春秋云境:CVE-2022-26965

春秋云境&#xff1a;CVE-2022-26965 文章合集&#xff1a;春秋云境系列靶场记录&#xff08;合集&#xff09; Pluck-CMS-Pluck-4.7.16 后台RCE&#xff1a;CVE-2022-26965 漏洞介绍 Pluck-CMS-Pluck-4.7.16 后台RCE 解题步骤 过弱口令登录&#xff1a;admin 登录之后按照…

什么是pickle?

什么是pickle? 学习《深度学习》鱼书的源码时&#xff0c;刚看到加载mnist数据集所用到的mnist.pkl文件&#xff0c;理所当然的以为pkg这样的package安装包文件。奇怪安装包为何被包含在代码目录中&#xff0c;结果发现 init_mnist函数还要加载它。 我们来看看这个神秘的mnis…

Laravel SQL查询中first, pluck与lists方法的使用

看到说明文档上面介绍&#xff0c;难免有些迷惑&#xff0c;还是亲自动手试试吧。 sql测试数据表 -- ---------------------------- -- Table structure for users -- ---------------------------- DROP TABLE IF EXISTS users; CREATE TABLE users (id int(10) unsigned NOT…

git chrry pickup

git chrry pickup 目录概述需求&#xff1a; 设计思路实现思路分析1.java2.转移分支3.git merge4.cherry pick. 切换到 master 分支Cherry pick 操作参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xf…

春秋云镜wp day1

春秋云镜wp day1 (qq.com) 建议关注公众号 websec.space&#xff0c;以后文章来csdn备份一份 今天看到之前买了内网渗透那本书&#xff0c;今天看到靶场上线了&#xff0c;打一天玩一下&#xff0c;总体cve的洞很好刷&#xff0c;比打CTF轻松多了。 CVE-2022-32991 首先登陆…

计算机网络谢希仁第七版 第四章 答案

计算机网络谢希仁第七版 第四章 网络层 计算机网络 第七版 谢希仁 答案 1.网络层向上提供的服务有哪两种?是比较其优缺点。网络层向运输层提供 “面向连接”虚电路(Virtual Circuit)服务或“无连接”数据报服务前者预约了双方通信所需的一切网络资源。优点是能提供服务质…

《计算机网络》谢希仁第七版知识点总结

1 概述1.1 网络的网络1.2 互联网的组成1.2.1 边缘部分1.2.2 核心部分 1.3 计算机网络的类别1.4 计算机网络的性能指标&#xff08;考点&#xff09;1.4.1 速率1.4.2 时延 1.5 计算机网络的体系结构1.5.1 协议与划分层次 1.6 各协议的体系结构1.6.1 各层功能概述1.6.2 主机H1向H…

计算机网络谢希仁第七版课后习题答案(第九章)

1.无线局域网都由哪几部分组成&#xff1f;无线局域网中的固定基础设施对网络的性能有何影响&#xff1f;接入点 AP 是否就是无线局域网中的固定具体设施&#xff1f; 无线局域网由无线网卡、无线接入点(AP)、计算机和有关设备组成&#xff0c;采用单元结构&#xff0c;将整个系…

计算机网络第四章课后答案(第七版谢希仁著)

计算机网络第四章课后答案简介&#xff1a; 平时老师布置的作业自己做的答案&#xff0c;仅是做参考&#xff0c;希望有帮助 还可以把全部的答案分享给大家&#xff1a;>完整答案< 第四章课后作业答案&#xff1a; 第一页&#xff1a; 第二页&#xff1a; 第三页&#…

计算机网络第七版 第四章课后答案

4-55.如图所示&#xff0c;网络145.13.0.0/16划分为四个子网N1,N2,N3和N4。这四个子网与路由器R连接的接口分别是m0&#xff0c;m1&#xff0c;m2和m3。路由器R的第五个接口m4连接到互联网。 有题目可以看出四个网络地址的地址掩码均为/18,故可以得出子网掩码均为255.255.192.0…

计算机网络第七版(谢希仁)第五章——传输层课后习题答案(上)

文章目录 5-01解答 5-02解答 5-03解答 5-04解答 5-05解答 5-06解答 5-07解答 5-08解答 5-09解答 5-10解答 5-11解答 5-12解答 5-13解答 5-14解答 5-15解答 5-16解答 5-17解答 5-18解答 5-19解答 5-20解答 5-21解答 5-22解答 5-23解答 5-24解答 5-25解答 5-26解答 5-27解答 5-28…

计算机网络谢希仁第七版 第二章 课后答案

计算机网络谢希仁第七版 第二章 课后答案 2-01 物理层要解决哪些问题&#xff1f;物理层的主要特点是什么&#xff1f;计算机网络谢希仁 答案&#xff1a;物理层要解决的主要问题&#xff1a; &#xff08;1&#xff09;物理层要尽可能地屏蔽掉物理设备和传输媒体&#xff0c;…

《计算机网络(第七版)谢希仁 编著》部分课后答案

1-28 假定要在网络上传送1.5MB的文件。设分组长度为1KB&#xff0c;往返时间RTT80ms。传送数据之前还需要有建立TCP连接的时间&#xff0c;这时间是2RTT160ms。试计算在以下几种情况下接收方收完该文件的最后一个比特所需的时间。 &#xff08;1&#xff09;数据发送速率为…

计算机网络 第七版【谢希仁】部分答案(第1~7章)【附:电子书】

计算机网络&#xff08;第7版&#xff09;-谢希仁主编.pdf&#xff1a;【链接&#xff1a;https://pan.baidu.com/s/1Nkz7Gxd6hoChXntR6860bw 提取码&#xff1a;zjxs】 建议在拼多多上买本习题解答&#xff01; 目 录 第一章 概述 第二章 物理层 第三章 数据链路层 第…

计算机网络第七版 谢希仁 课后答案

想看更多算法题&#xff0c;可以扫描上方二维码关注我微信公众号“数据结构和算法”&#xff0c;截止到目前我已经在公众号中更新了500多道算法题&#xff0c;其中部分已经整理成了pdf文档&#xff0c;截止到目前总共有800多页&#xff08;并且还会不断的增加&#xff09;&…

第七版自顶向下 第一章中文版 计算机网络课后习题答案

本人编写了1-9章全部答案&#xff0c;在我发布的pdf文件里&#xff0c;需要的话自行下载。文件免费 第一章 R组 1.主机和端系统这两个概念没有什么不同。在本书中&#xff0c;“主机”这个名词和“端系统”这个名词可以相互替换。端系统包括PC、工作站、web服务器、邮件服务器、…