簡體   English   中英

如何在JavaScript中創建hashmap實例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM