Javascript 在数组中深入搜索并删除
我得到了以下数组:Javascript 在数组中深入搜索并删除,javascript,arrays,Javascript,Arrays,我得到了以下数组: var arr = [ { 1: { id: 1, title: 'test' }, children: [ { 1: { id: 2, title: 'test2' } }
var arr = [
{
1: {
id: 1,
title: 'test'
},
children: [
{
1: {
id: 2,
title: 'test2'
}
}
]
}
];
直接在数组中的对象是组。1:是第一语言,2:是第二语言,等等。id存储在每个语言对象中(由于我使用的数据库)。子数组的构建方式与“arr”数组相同
多个孩子的例子:
var arr = [
{
1: {
id: 1,
title: 'test'
},
children: [
{
1: {
id: 2,
title: 'test2'
},
children: [
{
1: {
id: 3,
title: 'test3',
},
children: []
}
]
}
]
}
];
现在我需要从这个数组中删除项目。你可以有无限的孩子(我的意思是,孩子可以有孩子,谁可以有孩子等等)。我有一个需要发送ID参数的函数。我的想法是获得正确的对象,其中语言1的ID是ID参数。我明白了:
function deleteFromArray(id)
{
var recursiveFunction = function (array)
{
for (var i = 0; i < array.length; i++)
{
var item = array[i];
if (item && Number(item[1].ID) === id)
{
delete item;
}
else if (item && Number(item[1].ID) !== id)
{
recursiveFunction(item.children);
}
}
};
recursiveFunction(arr);
}
函数deleteFromArray(id)
{
var recursiveFunction=函数(数组)
{
对于(var i=0;i
但是,除了数组中的项之外,我正在删除局部变量项。我不知道该如何解决这个问题。我在网上到处找,但什么也没找到。
var arr=[{1:{id:1,title:'test'},子项:[{1:{id:2,title:'test2'},子项:[{1:{id:3,title:'test3',},子项:[]}];
函数deleteFromArray(id){
函数递归函数(arr){
对于(变量i=0;i
此方案的特点是,如果找到id
,则具有递归调用、迭代和短路功能。然后阵列被拼接
var arr=[{1:{id:1,title:'test'},子项:[{1:{id:2,title:'test2'},子项:[{1:{id:3,title:'test3',},子项:[]}];
功能拼接(阵列,id){
返回数组.some(函数(a,i){
if(a['1'].id==id){
阵列拼接(i,1)
返回true;
}
if(Array.isArray(a.children)){
返回拼接(a.子项,id);
}
});
}
拼接(arr,2);
document.write(''+JSON.stringify(arr,0,4)+'')
这个数组/json在有多个子元素的情况下会是什么样子?您尝试过拼接吗?@gurvinder372添加到主代码中。@Siddharth没有,因为有多个子元素。@NinaScholz阅读了我解释数组如何构建的地方。在那里我解释了整个阵列,所有的东西都是什么。我只是个傻瓜。我刚刚注意到,在我最初的数组中,子数组不是数组,而是对象。我认为它是一个数组,所以我用示例数组提出了一个问题,其中children也是一个数组。您知道在inspector控制台中是否可以输出数组变量的字符串吗?@JoshuaBakker您的意思是JSON.stringify()
?