0

整数と文字列の両方のインデックスを持つ配列があります。

何らかの理由で、$。eachが文字列インデックスを正しく反復していないようです。

以下の出力は次のとおりです。

idx:0 1 2 3

idx:1 4 5 6

idx:2 7 8 9

//実際のidx:3 a b c

//予想される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>

ご助力ありがとうございます、

リチャードヒューズ

4

3 に答える 3

2

javascriptには文字列のインデックス付き配列はありません。オブジェクトを使用する必要があります。

        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]);
        });
于 2012-05-30T08:34:54.953 に答える
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

文字列をインデックスとして使用する場合、データ構造はオブジェクト(配列ではない)であることに注意してください。

于 2012-05-30T08:34:04.800 に答える
0

Jquery $ .eachは、オブジェクトのプロパティまたは配列(両方ではない)を反復処理します。 jQuery

jQuery.each( collection, callback(indexInArray, valueOfElement) )
collection: The object or array to iterate over.
于 2012-05-30T08:38:27.937 に答える