javascript中使用Map

mis.comm.js.Map = function() {
    this.elements = new Array();
 
    //获取MAP元素个数
    this.size = function() {
        return this.elements.length;
    }
 
    //判断MAP是否为空
    this.isEmpty = function() {
        return (this.elements.length < 1);
    }
 
    //删除MAP所有元素
    this.clear = function() {
        this.elements = new Array();
    }
 
    //向MAP中增加元素(key, value)
    this.put = function(_key, _value) {
        this.elements.push( {
            key : _key,
            value : _value
        });
    }
 
    //删除指定KEY的元素,成功返回True,失败返回False
    this.remove = function(_key) {
        var bln = false;
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].key == _key) {
                    this.elements.splice(i, 1);
                    return true;
                }
            }
        } catch (e) {
            bln = false;
        }
        return bln;
    }
 
    //获取指定KEY的元素值VALUE,失败返回NULL
    this.get = function(_key) {
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].key == _key) {
                    return this.elements[i].value;
                }
            }
        } catch (e) {
            return null;
        }
    }
 
    //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
    this.element = function(_index) {
        if (_index < 0 || _index >= this.elements.length) {
            return null;
        }
        return this.elements[_index];
    }
 
    //判断MAP中是否含有指定KEY的元素
    this.containsKey = function(_key) {
        var bln = false;
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].key == _key) {
                    bln = true;
                }
            }
        } catch (e) {
            bln = false;
        }
        return bln;
    }
 
    //判断MAP中是否含有指定VALUE的元素
    this.containsValue = function(_value) {
        var bln = false;
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].value == _value) {
                    bln = true;
                }
            }
        } catch (e) {
            bln = false;
        }
        return bln;
    }
 
    //获取MAP中所有VALUE的数组(ARRAY)
    this.values = function() {
        var arr = new Array();
        for (i = 0; i < this.elements.length; i++) {
            arr.push(this.elements[i].value);
        }
        return arr;
    }
 
    //获取MAP中所有KEY的数组(ARRAY)
    this.keys = function() {
        var arr = new Array();
        for (i = 0; i < this.elements.length; i++) {
            arr.push(this.elements[i].key);
        }
        return arr;
    }
}


JavaScript 中的 `Map` 是一种非常有用的数据结构,它允许存储键值对,并且键可以是任意类型。以下是对 `Map` 方法的详细说明以及如何使用它们的教程。 ### 创建 Map 实例 可以通过 `new Map()` 构造函数创建一个新的 `Map` 实例。键值对可以通过 `set()` 方法添加到 `Map` 中,也可以在创建时通过数组直接初始化。 ```javascript var a = new Map(); a.set("name", "梁戈霄"); a.set(1, ["a", "b", "c"]); console.log(a); // 输出: Map { 'name' => '梁戈霄', 1 => [ 'a', 'b', 'c' ] } ``` ### 设置和获取值 `set()` 方法用于向 `Map` 中添加或更新键值对,而 `get()` 方法用于检索指定键的值。 ```javascript var rtMap = new Map(); rtMap.set("1", "hello"); rtMap.set("2", "good"); console.log(rtMap.get("1")); // 输出: hello console.log(rtMap.get("2")); // 输出: good ``` ### 检查键或值是否存在 `has()` 方法用于检查 `Map` 中是否存在指定的键或值。如果存在,则返回 `true`;否则返回 `false`。 ```javascript if (rtMap.has("1")) { console.log("含有该键"); } else { console.log("不含有该键"); } if (rtMap.has("hello")) { console.log("含有该值"); } else { console.log("不含有该值"); } ``` ### 获取所有键、值或条目 `keys()`、`values()` 和 `entries()` 方法分别用于获取 `Map` 的所有键、值或条目。这些方法返回的是迭代器对象,可以通过扩展运算符转换为数组。 ```javascript var keys = [...rtMap.keys()]; var values = [...rtMap.values()]; var entries = [...rtMap.entries()]; console.log(keys); // 输出: [ '1', '2' ] console.log(values); // 输出: [ 'hello', 'good' ] console.log(entries); // 输出: [ [ '1', 'hello' ], [ '2', 'good' ] ] ``` ### 删除条目和清空 Map `delete()` 方法用于删除指定键的条目,而 `clear()` 方法用于删除所有条目。 ```javascript rtMap.delete("1"); console.log(rtMap); // 输出: Map { '2' => 'good' } rtMap.clear(); console.log(rtMap); // 输出: Map {} ``` ### Map 与数组转换 `Map` 可以通过扩展运算符轻松转换为数组,反之亦然。 ```javascript var mapFromArray = new Map([ ["key1", "value1"], ["key2", "value2"] ]); var arrayFromMap = [...mapFromArray]; console.log(arrayFromMap); // 输出: [ [ 'key1', 'value1' ], [ 'key2', 'value2' ] ] ``` ### Map 的遍历 `Map` 支持使用 `forEach()` 方法进行遍历,类似于数组的 `forEach()` 方法。 ```javascript mapFromArray.forEach((value, key) => { console.log(`键: ${key}, 值: ${value}`); }); ``` ### 示例:使用 Map 进行数据处理 假设有一个数组,需要将其转换为 `Map` 并进行一些处理。 ```javascript var arr = [1, 2, 3, 4]; var doubledMap = new Map(arr.map((item, index) => [index, item * 2])); console.log(doubledMap); // 输出: Map { 0 => 2, 1 => 4, 2 => 6, 3 => 8 } ``` ### 注意事项 - `Map` 的键可以是任意类型,包括对象和原始值。 - `Map` 保持插入顺序,因此可以通过遍历器按顺序访问条目。 - `Map` 提供了比普通对象更丰富的操作方法,如 `size`、`clear()` 和 `delete()`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值