每个和字符串索引

时间:2012-05-30 08:30:54

标签: javascript jquery html arrays

我有一个包含整数和字符串索引的数组。

出于某种原因,似乎$ .each没有正确地迭代字符串索引。

以下输出为:

idx:0 1 2 3

idx:1 4 五 6

idx:2 7 8 9

//实际 idx:3 一个 b ç

//预期 idx:abc 10 11 12

以下是我测试过的代码:

<html>
<head>
    <title>jQuery - each</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">

        $(document).ready(function () {

            var a = new Array();
            a.push(0);
            a[0] = [1, 2, 3];

            a.push(1);
            a[1] = [4, 5, 6];

            a.push(2);
            a[2] = [7, 8, 9];

            a.push("abc");
            a["abc"] = [10, 11, 12];

            $.each(a, function (idx, v) {

                alert("idx: " + idx);
                alert(v[0]);
                alert(v[1]);
                alert(v[2]);
            });
        });

    </script>
</head>
<body>
</body>

非常感谢你的帮助,

理查德休斯

3 个答案:

答案 0 :(得分:2)

像这样更改你的代码:

 $(document).ready(function () {

        var a = {};
        a['0'] = [1, 2, 3];
        a['1'] = [4, 5, 6];
        a['2'] = [7, 8, 9];
        a['abc'] = [10, 11, 12];

        $.each(a, function (idx, v) {
            console.log("idx %s : %s, %s, %s", idx, v[0], v[1], v[2]);
        });
  });

这将返回

idx 0 : 1, 2, 3
idx 1 : 4, 5, 6
idx 2 : 7, 8, 9
idx abc : 10, 11, 12

请注意,当您使用字符串作为索引时,您的数据结构是一个对象(而不是数组)

答案 1 :(得分:2)

javascript中没有字符串索引数组,您需要使用object。

        var a = {};
        a[0] = [1, 2, 3];
        a[1] = [4, 5, 6];
        a[2] = [7, 8, 9];
        a["abc"] = [10, 11, 12];

        $.each(a, function (idx, v) {

            alert("idx: " + idx);
            alert(v[0]);
            alert(v[1]);
            alert(v[2]);
        });

答案 2 :(得分:0)

Jquery $ .each迭代对象的属性或数组,而不是两者。 jQuery

jQuery.each( collection, callback(indexInArray, valueOfElement) )
collection: The object or array to iterate over.