如何使用JavaScript/JQuery创建一个简单的地图

11 浏览
0 Comments

如何使用JavaScript/JQuery创建一个简单的地图

如何用JavaScript/JQuery创建与以下Java代码等效的代码:

var map = new Map(); //不一定是哈希映射,任何键/值映射都可以
map.set(myKey1, myObj1);
map.set(myKey2, myObj2); //重复n次
function get(k) {
    return map.get(k);
}

0
0 Comments

如何使用JavaScript/JQuery创建一个简单的地图

在这个问题中,代码中出现了一些错误和问题,以下是解决这些问题的方法。

问题1:将所有这些方法放在原型上。

解决方法:将所有方法放在原型上,以便它们可以在所有实例之间共享。

问题2:this.data[key] = null不会删除属性,它只是将其值设置为null。应该使用delete this.data[key]来删除属性。

解决方法:使用delete this.data[key]来删除属性。

问题3:在entry函数中,需要做如下更改:

entrys[i] = {

key: this.keys[i],

value: this.data[i]

};

应该更改为:

entrys[i] = {

key: this.keys[i],

value: this.data[this.keys[i]]

};

问题4:数组没有remove函数,需要创建它。

解决方法:在Array.prototype上创建remove函数。

以下是修改后的代码示例:

function Map() {
    this.keys = new Array();
    this.data = new Object();
}
Map.prototype.put = function (key, value) {
    if (this.data[key] == null) {
        this.keys.push(key);
    }
    this.data[key] = value;
};
Map.prototype.get = function (key) {
    return this.data[key];
};
Map.prototype.remove = function (key) {
    delete this.data[key];
    var index = this.keys.indexOf(key);
    if (index > -1) {
        this.keys.splice(index, 1);
    }
};
Map.prototype.each = function (fn) {
    if (typeof fn != 'function') {
        return;
    }
    var len = this.keys.length;
    for (var i = 0; i < len; i++) {
        var k = this.keys[i];
        fn(k, this.data[k], i);
    }
};
Map.prototype.entrys = function () {
    var len = this.keys.length;
    var entrys = new Array(len);
    for (var i = 0; i < len; i++) {
        entrys[i] = {
            key: this.keys[i],
            value: this.data[this.keys[i]]
        };
    }
    return entrys;
};
Map.prototype.isEmpty = function () {
    return this.keys.length == 0;
};
Map.prototype.size = function () {
    return this.keys.length;
};
Array.prototype.remove = function (o) {
    var index = this.indexOf(o);
    if (index > -1) {
        this.splice(index, 1);
        return true;
    }
    return false;
};

这样就解决了代码中出现的问题,可以使用这个修改后的代码创建一个简单的地图。

0
0 Comments

问题的原因是作者想要了解如何使用JavaScript/JQuery创建一个简单的地图,并且还有之前的回答已经过时,现在可以使用ECMAScript 2015 (ES6)标准中的Map实现。

解决方法是作者给出了一个使用JavaScript创建简单地图的示例代码。该代码使用了一个对象来模拟地图,通过将键值对存储在对象中,然后通过键来访问对应的值。作者还提到可以使用new Object()代替new Array()来创建对象。此外,还有如果想要删除地图中的键值对,可以将对应的值设置为null,或者使用JavaScript的splice函数来删除数组中的元素。

此外,还有关于键的问题,即myKey1是否是一个变量还是一个字符串。作者指出在示例代码中没有引号将myKey1括起来,但是如果想要将它作为键,可以在字符串周围添加引号。

最后,作者提到了官方实现的问题,即它不允许自定义相等性,只使用===进行比较,因此仍然需要编写自己的实现。

作者提出了一个使用JavaScript创建简单地图的问题,并给出了相应的解决方案和一些额外的说明。

0
0 Comments

创建简单地图的问题是如何使用JavaScript/JQuery。原因是我们可以使用纯对象和函数来创建一个简单的映射。解决方法是使用纯对象和函数来创建映射,同时确保键不用字符串指定,即不使用引号。以下是解决方法的代码示例:

var map = { key1: "value1", key2: "value2" }
function get(k){
  return map[k];
}

0