按位置获取数组的索引

时间:2011-10-10 04:48:30

标签: javascript

我想按位置获取数组的索引。这可能吗?例如,我想要打印以下功能:

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不应在内部硬编码)

修改
他们打印的订单并不重要!

6 个答案:

答案 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。该页面上有一个例子。