【发布时间】:2013-11-12 15:52:30
【问题描述】:
我有以下代码:
var actionsAllowed = $(packet).find('actionsAllowed').get();
var actionArray = $(actionsAllowed).each(function () {
var actionNodes = this.childNodes;
var actionNumber = actionNodes.length;
var array = new Array(actionNumber)
for (var i = 0; i < actionNodes.length; i++) {
var action = actionNodes[i].nodeName
array[i] = action
console.log(action);
}
return array;
});
这会在数据包 (XML) 中搜索 "actionsAllowed" 并将其返回为 "[actionsAllowed]"。
然后,我尝试使用数组中列出的每个操作创建一个数组。
"this" 变为 "actionsAllowed" 而没有 "[ ]" 并允许它以“NodeList[ActionOne, ActionTwo, ActionThree]”的形式返回子节点。
然后我得到 NodeList 的长度并创建一个该长度的数组。
然后我遍历 NodeList 并将每个添加到数组中。
最后返回数组为"[ActionOne, ActionTwo, ActionThree]",太棒了!
但是 - 这就是问题所在:
变量"actionArray" 变为"Object[actionsAllowed]",而不是数组。
知道为什么会这样吗?我有一个理论,但我无法解决它=(
谢谢!
【问题讨论】:
-
$(actionsAllowed).each(always 返回一个 jquery 对象。你希望return array;做什么? -
actionArray = actionArray.get()应该可以工作。 -
我希望“返回数组;”将“actionArray”定义为“array”。但事实并非如此,还有其他方法可以做到这一点吗?
-
嗯,就目前而言,我不知道你的最终结果应该是什么,所以现在我不知道该建议什么。
-
@Gary:当您从
.each中return时,它的行为类似于break(用于虚假值)和continue(用于真实值)。我想你可能正在寻找.map()。
标签: javascript jquery arrays iteration children