Javascript 从嵌套对象数组中删除项
我正在使用AngularJS,在我的控制器中有这样一个对象数组:Javascript 从嵌套对象数组中删除项,javascript,angularjs,multidimensional-array,Javascript,Angularjs,Multidimensional Array,我正在使用AngularJS,在我的控制器中有这样一个对象数组: $scope.folderList = [{ name: 'root', path: 'uploads/', subs: [{ name: 'pictures', path: 'uploads/pictures', subs: [{ ... }] }, { name: 'videos',
$scope.folderList = [{
name: 'root',
path: 'uploads/',
subs: [{
name: 'pictures',
path: 'uploads/pictures',
subs: [{
...
}]
}, {
name: 'videos',
path: 'uploads/videos',
subs: [{
...
}]
}]
}];
对于这个嵌套数组,我有两条指令将它们设置在一个嵌套的UL-LI列表中,并带有ng repeat
现在我有了文件夹的嵌套列表,我想触发一个函数来删除选定的文件夹
因此,我使用参数中的“folder”触发我的函数删除,例如,如果我在图片文件夹上触发“delete”函数,folder参数将如下所示:
folder = {
name: 'pictures',
path: 'uploads/pictures',
subs: [{ ... }]
}
我想从嵌套数组中删除这个对象
对于1级对象数组,我使用以下方法:
var index = $scope.folderList.indexOf(folder);
delete $scope.folderList.splice(index, 1);
但它(显然)不适用于嵌套数组
如何从JavaScript(或AngularJS)上的嵌套数组中轻松删除条目
我听说Underline.js就是为此而设计的,但我从未使用过它,在看过他们的文档后,我无法找到合适的函数来实现这一点
谢谢你的帮助 为此,您需要在
subs
上编写一个递归函数。如果搜索参数文件夹
是相同的对象,但不是相同的引用,您可能还需要考虑如何执行比较。谢谢您的回复!我可以用“路径”到达我想去的地方。然后我会有每个父文件夹的几个索引?(例如,要进入“pictures”文件夹,我需要[0,0])。但是,我认为我做不到:“删除$scope.folderList.splice([0,0],1);”?如果所有索引都指向正确的文件夹,如何从这些索引中删除正确的文件夹?我能用接头吗?或者还有其他函数吗?您仍然使用splice,但是您使用正确的this
在var cd=$scope.folderList;cd=cd[0];cd.拼接(0,1)代码>谢谢!它起作用了,而且比我想象的要容易,而且对于拼接来说非常明显,现在我看到了!