Jquery每个函数都不适用于字符串索引数组

Mar*_*ior 3 javascript arrays iteration jquery

我无法让$ .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");
Run Code Online (Sandbox Code Playgroud)

输出:

First Array:
   [0]: 52
   [1]: 33
Second Array:
Run Code Online (Sandbox Code Playgroud)

And*_*ker 12

一个阵列总是由表示元素的位置的整数索引.

您正在寻找一个对象,其属性可以通过括号表示法访问:

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");
Run Code Online (Sandbox Code Playgroud)

在原始代码中,$.each从未输入块,因为您没有向数组添加任何元素.您确实在该数组上定义了属性firstsecond为它们赋值.

示例: http ://jsfiddle.net/ddTPu/