我想按位置获取数组的索引。这可能吗?例如,我想要打印以下功能:
var args = new Array();
args["name"] = "john";
args["surname"] = "smith";
printPerson(args);
function printPerson(args) {
for(var i = 0; i < args.count; i++) {
???
}
}
“姓名:约翰姓:史密斯”
(即name
&amp; surname
不应在内部硬编码)
修改
他们打印的订单并不重要!
答案 0 :(得分:4)
您是要为数组分配属性,并希望这些属性按某种顺序显示?
不需要数组。更好地使用Object文字:
var person = {
name:'John',
surname:'smith',
toString: function(){
return 'name: '+this.name
+', surname: '+this.surname;
}
};
alert(person); //=>name: john, surname: smith
答案 1 :(得分:3)
未经测试:
for(var i in args)
alert(i + ":" + args[i]);
修改强>
如果订单很重要,你可以创建一个对象数组。比如
args[0] = { key: 'name', value: 'john' };
args[1] = { key: 'name', value: 'mike' };
for(var i = 0; i < args.length; i++)
alert(args[i].key + ":" + args[i].value);
或某事..
答案 2 :(得分:3)
这些值只是args
对象的属性。因此,您可以使用for...in
var args = new Array();
args["name"] = "john";
args["surname"] = "smith";
for(x in args)
document.write(x + ":" + args[x] + " ");
答案 3 :(得分:2)
<html>
<body>
<script type="text/javascript">
var args = new Array();
args["name"] = "john";
args["surname"] = "smith";
function printPerson(args) {
for(key in args) {
alert(key + ":" + args[key]); // you can write your values, rather than alert them, but gives you the idea!
}
}
printPerson(args);
</script>
</body>
</html>
答案 4 :(得分:2)
这不是JavaScript中Array
的正确用法,它只应使用数字索引。通过添加字符串键属性,您将添加实例属性,但它们不能在for
循环中枚举。您可以使用Object
代替,这是一组键/值对。
KooiInc的answer演示了Object
用于此目的。
答案 5 :(得分:0)
我认为您可以使用for .. in。该页面上有一个例子。