我无法让$ .each()jquery函数使用字符串索引数组,任何想法都错了吗?
示例@ JSFiddle - > http://jsfiddle.net/WKDUA/
代码:
var firstArray = [52, 33];
document.writeln("First Array:\n<ul>");
$.each(firstArray, function(key, value)
{
document.writeln('<li>[' + key + ']: ' + value + "</li>\n");
});
document.writeln("</ul>\n");
var secondArray = new Array();
secondArray['first'] = 'foo';
secondArray['second'] = 'bar';
document.writeln("Second Array:\n<ul>");
$.each(secondArray, function(key, value)
{
document.writeln('<li>[' + key + ']: ' + value + "</li>\n");
});
document.writeln("</ul>\n");
输出:
First Array:
[0]: 52
[1]: 33
Second Array:
答案 0 :(得分:12)
array始终用表示元素位置的整数索引。
您正在寻找可以通过括号表示法访问其属性的object:
var obj = {};
obj['first'] = 'foo';
obj['second'] = 'bar';
document.writeln("Second Array:\n<ul>");
$.each(obj, function(key, value)
{
document.writeln('<li>[' + key + ']: ' + value + "</li>\n");
});
document.writeln("</ul>\n");
在原始代码中,从未输入$.each
块,因为您没有向数组添加任何元素。您 在该数组上定义属性first
和second
并为其分配值。
答案 1 :(得分:3)
字符串索引数组(a.k.a。关联数组)是对象,而不是数组 数组不能包含数字作为索引(它甚至可以是Math.PI,因为它是一个数字) 解决方案是将secondArray声明为对象:
var secondArray = {};// or var secondArray = new Object();
您可以看到here a working example。