javascript中字符串向量映射的数组读取问题

时间:2011-06-23 00:52:34

标签: javascript

我是JS的新手。这是我的代码,我相信它应该有用......但事实并非如此。

var pop = new Array();
pop['la'] = new Array('nt','gb','te');
pop['sa'] = new Array('nt','gb');
pop['ha'] = new Array('pc','pa');
var _ecpop="la";

for (var i = 0; i < pop[_ecpop].length; i++)
{
    document.write(pop[_ecpop][i]);
}

我只是不知道有任何替代方法来获得字符串向量的映射。

谢谢,

阿米尔。

2 个答案:

答案 0 :(得分:1)

这不是一个数组,而是一个Javascript对象,在其属性中包含数组。您可以使用对象和数组literals。优点是您的代码看起来更清晰。在javascript代码中使用new Arraynew Object的理由很少(例如参见this SO Question)。

var pop = {
  la: ['nt','gb','te'],
  sa: ['nt','gb'],
  ha: ['pc','pa']
}

现在可以使用

for (var i = 0; i < pop.la.length; i++) { 
 console.log(pop.la[i]);
} 

如果属性标签存储在变量中(例如你_ecpop),则可以使用bracket notiation来检索它的值:

var laArr = pop[_ecpop];
for (var i = 0; i < laArr.length; i++) { 
 console.log(laArr[i]);
}

另一种方法是为对象分配标签:

var _ecpop = 'la';
pop[_ecpop] = ['nt','gb','te'];

document.write不是在网页上放置内容的首选方式。它更好,同样容易使用带有id的元素,并使用innerHTML将输出写入其中,例如

document.getElementById('myOutput').innerHTML = '[some output here]';

答案 1 :(得分:0)

在javascript中,一个数组只能有数字索引,如果你想使用文本索引,你应该使用对象。

var pop = new Object();

var pop = {};

然后:

pop['la'] = new Array('nt','gb','te');

但是,由于对象不是数组,因此它没有长度成员,但就像数组一样,您可以使用for..in来遍历其所有值。

使用document.write不是一个好选择,因为它只在文档加载期间有效,而不是在文档加载之后。尝试使用文本节点或innerhtml。