gpt4 book ai didi

javascript - 从数组中删除所有没有子元素的元素

转载 作者:行者123 更新时间:2023-11-30 15:42:45 25 4
gpt4 key购买 nike

<分区>

我以扁平树的形式从服务器获取数据。然后我将构建树的数据 JsTree 库传输给我。在传输数据 JsTree 之前,我过滤数据并删除 folder 类型的没有子元素的空元素。

这是我得到的一些代码:

dataFilter: function (jsonString) {
function getItemList(item, list) {
if (item === null) {
return null;
}
if (item.parent === "#" && item.type !== "folder") {
return item;
} else {
if (item.type === "folder") {
var itemFolder = _.findWhere(list, { parent: item.id });
if (itemFolder) {
return item;
}
} else {
return item;
}
}
return null;
};
function removeEmptyFolder(list) {
console.log(list);
var treeListTemp = [];
for (var i = 0; i < list.length; i++) {
treeListTemp.push(getItemList(list[i], list));
}
var treeList = [];
for (var j = 0; j < treeListTemp.length; j++) {
var k = getItemList(treeListTemp[j], treeListTemp);
if (k === null) {
removeEmptyFolder(_.filter(treeListTemp,
function(item) {
return item !== null;
}));
} else {
treeList.push(k);
}
}
//console.log(treeList);
return treeList;
};
return JSON.stringify(_.filter(removeEmptyFolder(JSON.parse(jsonString)),
function (item) {
return item !== null;
}));
}

这是一个工作示例 https://jsfiddle.net/nkqgot2a/11/

这段代码几乎可以正常工作。但是,如果最后一个元素包含一个子元素,则它不会从列表中删除。数据过滤后,元素“folder 9”不应出现在列表中。

请告诉我如何修复我的函数以便删除所有空文件夹?

到目前为止,在我看来,递归是由过多的时间引起的。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com