所以我猜这个标题是自我解决的。我有一些嵌套forEach
循环的代码。循环遍历chapter
个对象的数组。每个对象可以有多个子节点,它们也可以有多个子节点,依此类推。
我想最终得到一个包含带子节点的嵌套数组的数组。
到目前为止,我的代码看起来像这样:
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;
};
};
除了我的页面没有加载,我没有收到任何错误。它在我的控制台中没有写任何东西。我认为这是设置中的一个问题,但我目前无法找到问题所在。真的希望你们能帮忙。
答案 0 :(得分:3)
最有可能出现的问题是:
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
}
答案 1 :(得分:1)
有点奇怪..我不明白为什么你要使用'添加'而不是推动'方法。如果我尝试添加"数组的对象我得到一个常见的错误。不是吗?