gpt4 book ai didi

javascript - .each 不在数组上工作。但是 .isArray 返回 true?

转载 作者:数据小太阳 更新时间:2023-10-29 05:40:37 26 4
gpt4 key购买 nike

我创建了一个包含一些项目的对象,其中一个包含多个对象,每个对象都包含一个数组。这是它的结构。

$.myVar = {
cp : "",
ps : {
m1 : ["001", "002", "003"],
m2 : ["002", "004"]
}
};

我的脚本不断崩溃,提示 $.myVar.ps["m1"] 每个都没有方法。

当我进入 Chrome 的控制台进行调查时,我运行以下命令并获得显示的输出。

$.myVar.ps["m1"]
["001", "002", "003"]
$.myVar.ps["m1"].each( function (i, p) {alert(i)})
TypeError: Object 001,002,003 has no method 'each'

此外,如果我运行以下命令,它证明 m1 是一个数组。

$.isArray($.myVar.ps["m1"])
true

所以它似乎同意 m1 是一个数组,但它拒绝这样对待它。知道我做错了什么吗?

最佳答案

each 不是原生的 Array 方法;它是 jQuery 对象的一种方法,即那些由 $ 函数创建的对象。你可以做

$($.myVar.ps.m1).each(function (i, el) { /* ... */ });

(不推荐,因为它在将数组包装在 $(...) 中时会创建一个不必要的 jQuery 对象)或者您可以只使用 $.each:

$.each($.myVar.ps.m1, function (i, el) { /* ... */ });

最推荐的路线,如果你使用的是现代浏览器(IE >=9),或者使用es5-shim , 是使用标准的 Array.prototype.forEach 方法:

$.myVar.ps.m1.forEach(function (el, i) { /* ... */ });

注意不同的参数顺序(IMO 更好,因为如果您不需要它,您可以省略索引)。

关于javascript - .each 不在数组上工作。但是 .isArray 返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4270513/

26 4 0
文章推荐: ios - UIView 的程序化 "fuzzy"样式背景
文章推荐: javascript - 如何知道
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com