【问题标题】:Array displays zero length and no value with each()数组显示零长度并且每个()都没有值
【发布时间】:2013-04-29 16:05:12
【问题描述】:

我对 PHP 比对 JQuery 更熟悉,而且我对数组很感兴趣。我已经阅读了论坛上关于这个主题的所有帖子,但无法让它发挥作用。

我有一个我认为是数组的东西。 在 php 中看起来像这样的东西

myArr = ['option-4' => '3','option-1' => '8', 'option-3' => '0' ];

在 JQuery 中,我可以使用命令检索值

var x = myArr['option-1'];

这一切都很好,但我需要做的是创建一个值字符串。所以我需要遍历元素并将元素的值添加到字符串中。问题是循环。

当我检查数组的长度时

alert("Elements in array "+myArr.length);

它总是返回零。

当我尝试类似的事情时

$.each(myArr , function(i, val) { 
  alert(myArr[i]); 
});

没有显示。

我显然遗漏了一些东西,我的 PHP 知识一定会阻止一些东西。 有人可以帮忙吗?

【问题讨论】:

  • 在 Javascript 中,类似的东西是一个对象,而不是一个数组。 Javascript 允许您使用数组索引语法访问对象,但它们不是数组。

标签: javascript jquery arrays loops


【解决方案1】:

这不是一个有效的 JavaScript 数组。你想使用一个对象:

var myArr = {'option-4': '3', 'option-1': '8', 'option-3': '0' };

然后您可以使用 for .. in 遍历所有键:

for (var key in myArr) {
    alert(myArr[key]);
}

这相当于 PHP 中的关联数组。请注意,您需要使用显式键来访问元素,不能使用索引,例如myArr[0]

【讨论】:

  • 对象上的数字索引也被视为键。可以使用 length 属性和相应的索引来设置所谓的“类数组对象”。 (现在无法确定,因为 jsFiddle 现在一直在使用。我认为 0 != '0' 用作键时......)
  • 就像我说的,这就是它在 PHP 中的样子。我尝试了您提供的循环并且它有效。猜猜它毕竟是一个有效的 JavaScript 数组。感谢您的帮助。
【解决方案2】:

如果你想使用 jQuery:

$.each(myArr , function(key, val) { 
  alert(key + ": " + val); 
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 2012-09-06
    • 1970-01-01
    • 2021-03-29
    • 2019-06-09
    • 1970-01-01
    相关资源
    最近更新 更多