new Map() 与 new Set()

new Map() 与 new Set() 使用方法与应用场景

一. new Map() 是什么?


new Map() 类似于 对象,属于键值对集合,但是此 键值对象的键值 有所不同,此键值可以包含:
string / number / Object / Array 或 undefined 等等


nameValue
set()设置属性, 为 map 添加数据,返回 map 集合
get () ()获取对应的 key 值,
第一个括号为 key 值,
如果 value 为一个函数,**第二个括号为传参**数据 ,详见1.1 方法2
has ()Boolean,存在:true, 不存在:false
判断 map 成员中是否存在这个值
size ()Number
返回 map 成员的 length
delete()Boolean,成功:true, 失败:false,
删除指定的 key 值
clear()清空 map 中的数据
forEach()遍历 map
keys()遍历 map 中的 key
values()遍历 map 中的 value

new Map() 使用方法

let map = new Map()
let map = new Map([ [key,value],[key,value] ])


1. set(key,value) 设置属性


// 基础写法:
let newMap = new Map()
newMap.set(1,'123') // { 1 => '123' }
newMap.set('99', { type: "小明" ) // { '99' => Object }

// 简写
let newMap = new Map([1,'123']) // 数值:{ 1 => '123' }

let newMap = new Map(['2',234]) // 字符串:{ '2' => 234 }

let newMap = new Map(['99', { type: "小明" }]) // 最实用,详见1.1 ---字符串:{ '99' => Object } 

const newMap = new Map([ [{ id: 1 }, "123"] ]);  // 对象:{ Object => '123' } => { key:{ id : 1 } , value : "123" }

const newMap = new Map([ [{ id: 1 }, { type: "小明" }] ]);  // 对象:Object => Object

const newMap = new Map([ [["小红"], "姓名"] ]);  // 数组:{ Array(1) => '姓名' } => { key : ['小红'], value : "姓名" }

const newMap = new Map([ [["小红"], "姓名"] ]);  // undefined:undefined => '未定义'

const newMap = new Map([ [false, "布尔值"] ]);  // 布尔值: false => '布尔值'

const newMap = new Map([ [null, "空"] ]);  // null: null=> '空'

const newMap = new Map([ [NaN, "空"] ]);  // NaN: NaN => '空'

const newMap = new Map([ [NaN, "空"] ]);  // NaN: NaN => '空'


1.1 简洁写法: new Map([‘99’, { type: “小明” }]) 详解


这种写法有很多好处,在书写层面,会使代码简洁明了,一眼就能知道是哪一个的数据,取值也很方便,不用一个个去 this… 值,也不用 const 去定义值,再取定义的值,在代码层面,灵活性高,复用行强,如下:



// 方法 1 : 获取对象
const obj = new Map([
      ["tab1", { name: "小红", age: "18", data: [], method: this.reloadPages }],
      ["tab2", { name: "小明", age: "20", data: [], method: this.reloadPages }],
      ["tab3", { name: "小刘", age: "22", data: [], method: this.reloadPages }]
    ]).get("tab1");
    
 console.log(obj); // {name: '小红', age: '18', data: Array(0), method: ƒ}
 



// 方法 2 : 获取方法并传值1   (使用简洁写法,必须保证数据结构一致,否则会报错,使用set随意)
// 场景:直接调用 key值 对应的方法,并传参,get第二个括号为传参
	new Map([
      ["reload", this.reloadPages],
      ["reset", this.resetFun],
      ["confirm", this.confirmOk]
    ]).get("reload")('123');

//输入结果: reloadPages(str)=>{ consloe.log(str) => '123' }





// 方法 3:获取方法与传值2   (使用简洁写法,必须保证数据结构一致,否则会报错,使用set随意)
// 场景:自定义调用方法/传参字段
const [methods, title] = new Map([
      ["reload", [this.reloadPages, "刷新"]],
      ["reset", [this.resetFun, "重置"]],
      ["confirm", [this.confirmOk, "确认"]]
    ]).get("reload");

console.log(methods,title); // reloadPages()=>{} , "刷新"




// 方法 4: 自定义接口与传参字段
 const [method, data] = new Map([
      ["bd", ["/baidu/list", this.data.pageData]],
      ["jd", ["/JD/list", {pagesize:1,pageindex:10}]],
      [("tm", ["/TM/list", "天猫接口"])]
    ]).get("bd");
    
   this.getGatherFun(method, data);
    
    //自定义方法
    getGatherFun(method, data) {
      request(method,{ ...data }).then(res => {
        if (res.result == 0) {}
      });
    }




// 错误方式,会直接报错

const [method, title] = new Map([
      ["reset", this.resetFun, "重置"]
    ]).get("reset");
    
    
const [method, title] = new Map([
      ["reload", [this.reloadPages, "刷新"]],
      ["reset", this.resetFun],
      ["confirm", this.confirmOk]
    ]).get("reset")('123');


一. new set() 是什么?

new set,一般都是用来数组去重

nameValue
add()设置属性, 为 set 添加数据,返回 set 集合
has ()Boolean,存在:true, 不存在:false
判断 set 成员中是否存在这个值
size ()Number
返回 set 成员的 length
delete()Boolean,成功:true, 失败:false,
删除指定的 key 值
clear()清空 set 中的数据
forEach()遍历 set
keys()遍历 set 中的 key
values()遍历 set 中的 value

new Set() 使用方法


 const set = new Set(["小明", "小红", "小刘", "小明"]);
 
 const newSet = new Set([
      ["age", { id: 1855 }],
      ["age", { id: 1833 }],
      ["time", { id: 1955 }],
    ]);
    console.log(set); // {'小明', '小红', '小刘'}
    console.log(newSet); 
    // Array(2) Array(2) Array(2) 
    //展开  value: (2) ['age', {…}] value: (2) ['age', {…}] value: (2)['time', {…}]


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值