通过位置获取数组的索引

3
我想通过位置获取数组的索引。这可能吗?例如,我希望以下函数打印:
var args = new Array();
args["name"] = "john";
args["surname"] = "smith";

printPerson(args);
function printPerson(args) {

    for(var i = 0; i < args.count; i++) {
        ???
    }
}

姓名:约翰 姓氏:史密斯(即不应在函数内硬编码namesurname)编辑顺序打印出来并不重要!

所以您只是想打印关联数组中的键/值对吗? - Chris Eberle
2
最好使用一个对象来实现。 - aziz punjani
@Chris 是的,这就是我想告诉你的。 - Caner
6个回答

4
你正在为一个数组分配属性,并且希望这些属性以某种顺序出现吗?不需要使用数组,最好使用对象字面量:
var person = { 
               name:'John', 
               surname:'smith',
               toString: function(){
                          return 'name: '+this.name
                                   +', surname: '+this.surname;
                         }
             };
alert(person); //=>name: john, surname: smith

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);

或者什么的。。。


请注意,这里没有保证顺序,所以您可能会在“姓氏”之前得到“名字”。 - Cory Kendall

3

这些值只是args对象的属性。因此,您可以使用for...in迭代它们。

var args = new Array();
args["name"] = "john";
args["surname"] = "smith";

for(x in args)
    document.write(x + ":" + args[x] + " ");

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>

2
这不是JavaScript中正确使用Array的方式,它应该只使用数字索引。通过添加字符串键属性,您正在添加实例属性,但它们在for循环中不可枚举。相反,您可以使用一个Object,它是一组键/值对。
KooiInc的答案演示了使用Object来实现此目的。

0

我认为你可以使用for .. in来完成这个任务。那个页面上有一个例子。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接