繁体   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