当前位置:首页 > 技术分析 > 正文内容

WPS宏(JSA)教程——Map和Set(wps如何使用宏代码)

ruisui885个月前 (02-03)技术分析52

Map对象

Map对象其实就是一种简单的键/值对的集合,可以通过for...of...在按照数据插入时的顺序遍历所有的[key: value]对元素。Map对象具有极快的查找速度。

定义Map

因为Map是个对象,因此要定义一个Map对象,有两种方法:初始化一个空对象;用二维数组初始化Map对象。

如下示例:

let friutColor0 = new Map();//创建一个空的Map对象

//创建Map对象时初始化,需要一个二维数组来进行
let friutColor1 = new Map([['Orange','orange'],['Apple','red'],['Banana','yellow']])

Map的相关操作

1、添加元素,用Map的set方法。

let friutPrice = new Map();
friutPrice.set('Apple',7.00);
friutPrice.set('Orange',4.50);

2、读取元素,用Map的get方法(,继续上方的代码进行)。

console.log(friutPrice.get('Apple'));//返回7
console.log(friutPrice.get('Orange'));//返回4.5
console.log(friutPrice.get('Banana'));//返回undefined,因为没有Banana

3、判断元素是否存在,用Map的has方法(,继续上方的代码进行)。

console.log(friutPrice.has('Banana'));//返回false
console.log(friutPrice.has('Orange'));//返回true

4、删除元素,用Map的delete方法(,继续上方的代码进行)。

console.log(friutPrice.delete('Orange'));//返回true,删除一个存在的键值对,将会返回true
console.log(friutPrice.has('Orange'));//返回false,此时该键值对不存在,返回false
console.log(friutPrice.delete('Orange'));//返回false,删除一个不存在的键值对,将会返回false

5、对同一个键值对多次赋值,新值会替换旧值。因为键在Map中是唯一的。

friutPrice.set('Banana',2.5);
friutPrice.set('Orange',4.5);
console.log(friutPrice.get('Banana'));//返回2.5
console.log(friutPrice.get('Orange'));//返回4.5
friutPrice.set('Banana',3.5);
friutPrice.set('Orange',4);
console.log(friutPrice.get('Banana'));//返回3.5
console.log(friutPrice.get('Orange'));//返回4

6、遍历Map

for (let [key, value] of friutPrice) {
  console.log(`${key} price: ¥${value}元`);
}
/*
 "Apple price: ¥7元"
 "Orange price: ¥4元"
 "Banana price: ¥3.5元"
*/

7、获取Map的大小:Map的size属性

console.log(friutPrice.size);//返回3

8、清空Map,用clear()方法

friutPrice.clear();
console.log(friutPrice.size);//返回0

Set对象

Set对象是一组唯一值的集合,可以用for...of...按照添加顺序来遍历。Set 中的值只能出现一次;它在集合 Set 中是唯一的。要理解set,那么可以将set看作是一个特殊的map,只不过只保留了key,而抛弃了value。因此,Set的所有值都是唯一的。

定义Set

因为Set是一个特殊的Map对象,因此要定义一个Set对象,有两种方法:初始化一个空Set对象;用一个一维数组初始化Set对象,Set会自动忽略重复的元素。

let friut1 = new Set(); // 空Set
let friut2 = new Set(['Apple', 'Banana', 'Orange']); // 含'Apple', 'Banana', 'Orange'
let numbers = new set([1,2,3,4,'4']);//numbers{1,2,3,4,'4'}
let array1 = ['A','B','C'];
let friut3 = new Set(array1); //{'A','B','C'}

Set常规操作

1、添加元素,用set的add方法。

let friut1 = new Set(); 
friut1.add('Pear');
friut1.add('Pine apple');

2、判断是否存在元素,用set的has方法。

console.log(friut1.has('Pear'));//返回true
console.log(friut1.has('Apple'));//返回false,因为friut1中不存在Apple

3、删除元素,delete方法

console.log(friut1.delete('Pear'));//返回true
console.log(friut1.delete('Pear'));//删除不存的元素,返回false

4、遍历Set,用for...of...

for(item of friut1)
{
  console.log(item);
}

/*
 "Pear"
 "Pine apple"
*/

5、获取Set的大小,用属性size

console.log(friut1.size);//2

6、清空Set的大小,用clear方法

friut1.clear();
console.log(friut1.size);//0

***Map和Set这两个对象,是ES6新增加的两个对象。***



关注我,持续共同学习,一起踏上wps宏(JSA)的登山之路。

#头条创作挑战赛#

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/715.html

分享给朋友:

“WPS宏(JSA)教程——Map和Set(wps如何使用宏代码)” 的相关文章

vue3中父子传值、defineProps用法、defineEmits用法

Vue3中新增了一个 script setup 语法糖模式,可以在单文件组件中更简洁地编写组件逻辑。使用 script setup 语法后,props、data、computed、methods 等选项不再需要独立定义,而是可以直接在 setup 函数中声明,代码结构更加清晰,并且可以更方便地使用响...

10个实例小练习,快速入门熟练 Vue3 核心新特性(一)

作者:xuying 全栈修炼转发链接:https://mp.weixin.qq.com/s/_n2seDbbiO5hXQfuUGbUCQ前言Vue3.0 发 beta 版都有一段时间了,正式版也不远了,所以真的要学习一下 Vue3.0 的语法了。本篇文章总共分两部分,望小伙伴们认真阅读。下一篇:10...

祸害阿里云宕机3小时的IO HANG究竟是什么?

本文来自微信公号“CSDN”(ID:CSDNnews),作者 | 王知无, 责编| 郭 芮。2019年3月3日凌晨,微博炸锅,有网友反映说阿里云疑似出现宕机,华北很多互联网公司受到暴击伤害,APP、网站全部瘫痪,我自己的朋友圈和微信群里也有好友反馈,刚刚从被窝被叫起来去修Bug,结果发现服务器登不上...

你感动了吗?佳能超规格镜头 RF 24-105mm F2.8深度测评

如果要你选一支用作多题材创作的挂机镜头,那我相信很多人会选择24-105mm这个焦段的镜头。作为一支可以实现从广角到长焦的变焦镜头,24-105mm有着丰富的焦段选择。只是基于镜头体积以及光学结构上的限制,此前的24-105mm镜头只能恒定在F4的光圈。而佳能打破了这一限制,将实用焦段和恒定光圈完美...

一文让你彻底搞懂 vue-Router

路由是网络工程里面的专业术语,就是通过互联把信息从源地址传输到目的地址的活动。本质上就是一种对应关系。分为前端路由和后端路由。后端路由:URL 的请求地址与服务器上的资源对应,根据不同的请求地址返回不同的资源。前端路由:在单页面应用中,根据用户触发的事件,改变URL在不刷新页面的前提下,改变显示内容...

Vue页面传参详解

一、两种方式方法1:name跳转页面this.$router.push({name:'anotherPage',params:{id:1}})另一页面接收参数方式:this.$route.params.id示例:控制台展示:方法2:path跳转页面this.$router.push(...