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

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

ruisui883个月前 (02-03)技术分析43

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如何使用宏代码)” 的相关文章

vue中组件之间的通信方式

** 1.1 父子组件**a. 父向子传数据: 第1种: 父通过属性传值,子组件通过props接收数据(注:props传过来的数据是单向的,不可以进行修改)第2种:子组件可以通过$parent来获取父组件里的数据和调用父组件的方法(注:数据是双向的,还要注意如用了UI组件并且在该UI组件里重新定义一...

理解virt、res、shr之间的关系(linux系统篇)

前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。...

双子座应用程序推出模型切换器以在Android上访问2.0

#头条精品计划# 快速导读谷歌推出了Gemini 2.0 Flash实验版,现已在其安卓应用中可用,之前仅在gemini.google.com网站上提供。新版本的15.50包含模型切换器,用户可以在设置中选择不同模型,包括1.5 Pro、1.5 Flash和2.0 Flash实验版。谷歌提醒,2.0...

Vue进阶(幺叁捌):vue路由传参的几种基本方式

1、动态路由(页面刷新数据不丢失)methods:{ insurance(id) { //直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/particulars/${id}`,...

前端路由简介以及vue-router实现原理

作者:muwoo 来源:https://zhuanlan.zhihu.com/p/37730038后端路由简介路由这个概念最先是后端出现的。在以前用模板引擎开发页面时,经常会看到这样http://www.xxx.com/login 大致流程可以看成这样:浏览器发出请求服务器监听到80 端口(或443...

vue打开新窗口并且实现传参,有图有真相

我要实现的功能是打开一个新窗口用来展示新页面,而且需要传参数,并且参数不能显示在地址栏里面,而且当我刷新页面的时候,传过来的参数不能丢失,要一直存在,除非我手动关闭这个新窗口,即浏览器的标签页。通过面向百度编程,发现网上的根本达不到这个效果,而且还都是坑,明明实现不了,还若有其事的写出来,于是我在标...