![](/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.