![](/img/trans.png)
[英]How to write a recursive function to create a hashMap in javascript?
[英]How to create instance of hashmap in javascript?
我是javascript新手,通过简单的示例可以很好地解释吗?
var hashAfrica = { "country" : new Array()};
// populate all countries in africa.
var arr = hashAfrica["country"];
arr.push("kenya");
arr.push("egypt");
var hashAsia = { "country" : new Array()};
// populate all capitals in asia.
var arr = hashAsia["country"];
arr.push("india");
arr.push("china");
var hashAmerica = { "country" : new Array()};
// populate all capitals in america.
var arr = hashAmerica["country"];
arr.push("usa");
arr.push("canada");
我想做的是:
var hash = { "country" : new Array()};
var hashAfica = new hash();
var hashAsia = new hash();
var hashAmerica = new hash();
如何在javascript中完成此操作?
你可能会用
function hash() {
this.country = []; // or: new Array();
}
通过new hash()
创建此类对象。 否则你会做
function getCountryArray() {
return {country: []};
}
并像hashAfrica = getCountryArray()
一样使用它。
但是请注意,您在这里没有使用任何类似于哈希图的东西。 您并不是将所有这些数组都用作哈希图,而是用作简单列表。 如果要使用JavaScript进行某种映射,只需使用一个向其动态添加键的对象。
您确定不想要这样的结构吗
var countryHash = {
"africa": ["kenya", "egypt"],
"asia": ["india", "china"],
"amerika": ["usa", "canada"]
};
如果要使用new hash()
,则可以将hash()
定义为构造函数,并按如下所示进行操作:
function hash() {
this.country = [];
}
var hashAfrica = new hash();
hashAfrica.country.push("kenya");
hashAfrica.country.push("egypt");
// and so on...
var hashAsia = new hash();
var hashAmerica = new hash();
就我个人而言,我不会将其称为hash
,因为它实际上与哈希对象没有任何关系。 您只是在一个对象中存储一组国家/地区。 我可能会称其为continentInfo
之类的东西,并定义一个可以填充初始国家/地区列表的构造函数:
function ContinentInfo(list) {
// if initial argument passed, then split it into an array
// and set initial country array from it
if (list) {
this.countries = list.split(" ");
} else {
this.countries = [];
}
}
var africaInfo = new ContinentInfo("kenya egypt");
var asiaInfo = new ContinentInfo("india china");
var americaInfo = new ContinentInfo("usa canada");
其中,如果您实际上想要散列各大洲,则可以执行以下操作:
var continents = {};
continents["africa"] = new ContinentInfo("kenya egypt");
continents["asia"] = new ContinentInfo("india china");
continents["america"] = new ContinentInfo("usa canada");
这将使您按洲名称进行查找,然后每个洲结构将具有国家/地区列表,然后包含任何其他数据:
var asiaCountries = continents["asia"].countries;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.