我有一个包含整数和字符串索引的数组。
出于某种原因,似乎$ .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>
非常感谢你的帮助,
理查德休斯
答案 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.