我是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]);
}
我只是不知道有任何替代方法来获得字符串向量的映射。
谢谢,
阿米尔。
答案 0 :(得分:1)
这不是一个数组,而是一个Javascript对象,在其属性中包含数组。您可以使用对象和数组literals。优点是您的代码看起来更清晰。在javascript代码中使用new Array
或new 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。