can';不要让嵌套的forEach在Javascript中工作
所以我想这个标题是不言自明的。我有一些代码,里面有嵌套的can';不要让嵌套的forEach在Javascript中工作,javascript,arrays,foreach,nested,Javascript,Arrays,Foreach,Nested,所以我想这个标题是不言自明的。我有一些代码,里面有嵌套的forEach循环。循环在章对象数组上迭代。每个对象可以有多个子节点,也可以有多个子节点,依此类推 我希望最终得到一个数组,其中包含带有子节点的嵌套数组 到目前为止,我的代码如下所示: exports.chapter = function(req, res) { var chapters = [], result = []; chapters = exports.index(req, res);
forEach
循环。循环在章
对象数组上迭代。每个对象可以有多个子节点,也可以有多个子节点,依此类推
我希望最终得到一个数组,其中包含带有子节点的嵌套数组
到目前为止,我的代码如下所示:
exports.chapter = function(req, res) {
var chapters = [],
result = [];
chapters = exports.index(req, res);
chapters.forEach(function(chapter) {
if(chapter.orphan){
result.add({
'chapter': chapter,
'children': getChildren(chapter.children)
});
}
});
function getChildren(siblings) {
var children = [];
chapters.forEach(function(chapter) {
if($.inArray(chapter, siblings)){
children.add({
'chapter': chapter,
'children': getChildren(chapter.children)
});
}
});
return children;
};
};
我没有得到任何错误,除了我的网页没有加载。它不会在我的控制台中写入任何内容。我认为这是设置中的一个问题,但我目前无法找到位置。真的希望你们能帮忙。最可能的问题是:
if($.inArray(chapter, siblings)){
inArray是一个非常错误的方法:它返回一个索引,如果没有找到,则返回-1,而不是顾名思义的标志-1当然是真实的;而0
(有效索引)是错误的,因此您的if
可能希望
if($.inArray(chapter, siblings) != -1){
// We found it...
}
或者可能
if($.inArray(chapter, siblings) == -1){
// We didn't find it
}
最可能的问题是:
if($.inArray(chapter, siblings)){
inArray是一个非常错误的方法:它返回一个索引,如果没有找到,则返回-1,而不是顾名思义的标志-1当然是真实的;而0
(有效索引)是错误的,因此您的if
可能希望
if($.inArray(chapter, siblings) != -1){
// We found it...
}
或者可能
if($.inArray(chapter, siblings) == -1){
// We didn't find it
}
这有点奇怪。。我不明白你为什么用“添加”而不是“推送”方法。如果我试图将一个对象“添加”到数组中,我会得到一个常见的错误。是吗?有点奇怪。。我不明白你为什么用“添加”而不是“推送”方法。如果我试图将一个对象“添加”到数组中,我会得到一个常见的错误。是吗?你应该使用
filter()
和map()
instead@SLaks:我能否说服您举一个例子,说明使用filter()
或map()
可以更好地解决我的问题?您应该使用filter()
和map()
instead@SLaks:我能否说服您举一个例子,说明使用filter()
或map()
可以更好地解决我的问题?刚刚尝试了您的建议。它似乎没有解决这个问题problem@MichaelTotKorsgaard当前位置我无法完全理解您在循环中试图实现的目标。我想以上只是问题的一部分。只是尝试了你的建议。它似乎没有解决这个问题problem@MichaelTotKorsgaard当前位置我无法完全理解您在循环中试图实现的目标。我想以上只是问题的一部分。更改。将添加到。按确定已修复网页加载;-)然而,当我尝试调用这个方法时,我得到一个错误,告诉我它无法加载ressource,然后我一直得到一个socket.io
错误。我不知道错误是什么,也不知道它在我的代码中的什么位置。奇怪。正在更改。将
添加到。按
确定已修复网页加载;-)然而,当我尝试调用这个方法时,我得到一个错误,告诉我它无法加载ressource,然后我一直得到一个socket.io
错误。我不知道错误是什么,也不知道它在我的代码中的什么位置。奇怪。