map对象常用方法

map对象常用方法

还有个概念迭代器:

https://blog.csdn.net/z591102/article/details/119669419

map对象
  • 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
  • Map 中的键值是有序的(FIFO 原则先进先出原则),而添加到对象中的键则不是。
  • Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
  • Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。

1.key为字符串

2.key为对象

3.key为函数

4.key为NaN

常用方法
  1. clear方法。清空map中的键值对

    var myMap = new Map();
    myMap.set('bar', 'baz');
    myMap.set(1, 'foo');
    
    myMap.size;       // 2
    myMap.has('bar'); // true
    
    myMap.clear();
    
    myMap.size;       // 0
    myMap.has('bar')  // false
    
  2. delete方法。

    var myMap = new Map();
    myMap.set('bar', 'foo');
    
    myMap.delete('bar'); // Returns true. Successfully removed.
    myMap.has('bar');    // Returns false. The "bar" element is no longer present.
    

    3.entries方法。**entries()** 方法返回一个新的包含 [key, value] 对的 **Iterator** 对象,返回的迭代器的迭代顺序与 Map 对象的插入顺序相同。类似链表的感觉

    var myMap = new Map();
    myMap.set("0", "foo");
    myMap.set(1, "bar");
    myMap.set({}, "baz");
    
    var mapIter = myMap.entries();
    
    console.log(mapIter.next().value); // ["0", "foo"]
    console.log(mapIter.next().value); // [1, "bar"]
    console.log(mapIter.next().value); // [Object, "baz"]
    console.log(mapIter.next().value); // undefined
    

    4.forEach方法

    // 箭头函数
    forEach(() => { ... } )
    forEach((value) => { ... } )
    forEach((value, key) => { ... } )
    forEach((value, key, map) => { ... } )
    
    // 回调函数
    forEach(callbackFn)
    forEach(callbackFn, thisArg)
    
    // 内联回调函数
    forEach(function() { ... })
    forEach(function(value) { ... })
    forEach(function(value, key) { ... })
    forEach(function(value, key, map) { ... })
    forEach(function(value, key, map) { ... }, thisArg)
    
    //例子
    function logMapElements(value, key, map) {
        console.log(`map.get('${key}') = ${value}`)
    }
    new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements)
    // logs:
    // "map.get('foo') = 3"
    // "map.get('bar') = [object Object]"
    // "map.get('baz') = undefined"
    

​ 5.get方法返回某个 Map 对象中的一个指定元素。

let myMap = new Map();
myMap.set('bar', 'foo');

myMap.get('bar');   // Returns "foo"
myMap.get('baz');   // Returns undefined

​ 6.has方法返回一个bool值,用来表明map 中是否存在指定元素.

let myMap = new Map()
myMap.set('bar', "foo")

myMap.has('bar')   // returns true
myMap.has('baz')   // returns false

​ 7.**keys()** 返回一个引用的 **Iterator** 对象。它包含按照顺序插入 Map 对象中每个元素的key值。

var myMap = new Map();
myMap.set('0', 'foo');
myMap.set(1, 'bar');
myMap.set({}, 'baz');

var mapIter = myMap.keys();

console.log(mapIter.next().value); // "0"
console.log(mapIter.next().value); // 1
console.log(mapIter.next().value); // Object

​ 8.**size** 是可访问属性,用于返回 一个Map 对象的成员数量。

var myMap = new Map();
myMap.set('a', 'alpha');
myMap.set('b', 'beta');
myMap.set('g', 'gamma');

myMap.size // 3

9.**values()** 方法返回一个新的Iterator对象。它包含按顺序插入Map对象中每个元素的value值。

var myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

var mapIter = myMap.values();

console.log(mapIter.next().value); // "foo"
console.log(mapIter.next().value); // "bar"
console.log(mapIter.next().value); // "baz"

values方法加keys方法相当于entries方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值