Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中深入搜索并删除_Javascript_Arrays - Fatal编程技术网

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()