如何使用JavaScript/JQuery创建一个简单的地图
如何使用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; };
这样就解决了代码中出现的问题,可以使用这个修改后的代码创建一个简单的地图。
问题的原因是作者想要了解如何使用JavaScript/JQuery创建一个简单的地图,并且还有之前的回答已经过时,现在可以使用ECMAScript 2015 (ES6)标准中的Map实现。
解决方法是作者给出了一个使用JavaScript创建简单地图的示例代码。该代码使用了一个对象来模拟地图,通过将键值对存储在对象中,然后通过键来访问对应的值。作者还提到可以使用new Object()
代替new Array()
来创建对象。此外,还有如果想要删除地图中的键值对,可以将对应的值设置为null,或者使用JavaScript的splice函数来删除数组中的元素。
此外,还有关于键的问题,即myKey1是否是一个变量还是一个字符串。作者指出在示例代码中没有引号将myKey1括起来,但是如果想要将它作为键,可以在字符串周围添加引号。
最后,作者提到了官方实现的问题,即它不允许自定义相等性,只使用===进行比较,因此仍然需要编写自己的实现。
作者提出了一个使用JavaScript创建简单地图的问题,并给出了相应的解决方案和一些额外的说明。