每个和字符串索引

each and string index

本文关键字:索引 字符串      更新时间:2023-09-26

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

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

以下输出为:

IDX: 0123

IDX: 1456

IDX: 2789

//实际IDX: 3一个bC

//预期IDX:ABC101112

这是我测试的代码:

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

非常感谢您的帮助,

理查德·休斯

这样更改代码:

 $(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

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

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

Jquery $.each 遍历对象的属性或数组,而不是两者兼而有之。jQuery

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