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

时间:2011-08-04 20:10:20

标签: javascript jquery arrays iteration

我无法让$ .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:

2 个答案:

答案 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块,因为您没有向数组添加任何元素。您 在该数组上定义属性firstsecond并为其分配值。

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

答案 1 :(得分:3)

字符串索引数组(a.k.a。关联数组)是对象,而不是数组 数组不能包含数字作为索引(它甚至可以是Math.PI,因为它是一个数字) 解决方案是将secondArray声明为对象:

var secondArray = {};// or var secondArray = new Object();

您可以看到here a working example