Javascript 嵌套数目未知的数组中对象的递归筛选

Javascript 嵌套数目未知的数组中对象的递归筛选,javascript,Javascript,最近很抱歉,如果是重复某人的问题。然而,我找不到解决问题的办法 我有: 来自id的数组 2:嵌套级别未知的复杂对象: { "item": [ { "item": [ { "item": [ {

最近很抱歉,如果是重复某人的问题。然而,我找不到解决问题的办法

我有:

  • 来自id的数组
  • 2:嵌套级别未知的复杂对象:

        {
            "item": [
                {
                    "item": [
                        {
                            "item": [
                                {
                                    "item": [
                                        {
                                            id: 1,
                                            name: "potato"
                                        }
                                    ]
                                },
                                {
                                    "item": [
                                        {
                                            id: 2,
                                            name: "tomato"
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            "item": [
                                {
                                    "item": [
                                        {
                                            id: 3,
                                            name: "apple"
                                        }
                                    ]
                                },
                                {
                                    "item": [
                                        {
                                            id: 4,
                                            name: "pineapple"
                                        }
                                    ]
                                },
                                {
                                    id: 5,
                                    name: "carrot"
                                },
                            ]
                        },
                        {
                            id: 6,
                            name: "onion"
                        }
                    ]
                }
            ]
        }
    

    如何递归过滤普通对象而不破坏它的结构?如果
    数组中的对象成为筛选对象,则
    数组应为空。

    您可以定义一个函数,如果对象的id匹配,或者如果其中一个子项匹配,则返回一个新对象,或者使用一个表示“忽略此对象”的符号(未定义或null也可以):


    “item”是一个非常奇怪的对象数组名称。而且它非常通用。无法完全理解它是什么意思
    /*请检查id是否有效*/
    。这意味着它应该检查id是否是
    id
    数组中的一个?是的,如果问题显示出很小的努力,我通常会从答案中省略一些小部分:)嗯,似乎它不起作用,或者可能我遗漏了一些东西是的,您的对象结构不太一致,很多对象没有
    .item
    属性。这是一种非常酷的方法。我不明白省略是怎么起作用的,但它起作用了。非常感谢
        {
            "item": [
                {
                    "item": [
                        {
                            "item": [
                                {
                                    "item": [
                                        {
                                            id: 1,
                                            name: "potato"
                                        }
                                    ]
                                },
                                {
                                    "item": [
                                        {
                                            id: 2,
                                            name: "tomato"
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            "item": [
                                {
                                    "item": [
                                        {
                                            id: 3,
                                            name: "apple"
                                        }
                                    ]
                                },
                                {
                                    "item": [
                                        {
                                            id: 4,
                                            name: "pineapple"
                                        }
                                    ]
                                },
                                {
                                    id: 5,
                                    name: "carrot"
                                },
                            ]
                        },
                        {
                            id: 6,
                            name: "onion"
                        }
                    ]
                }
            ]
        }
    
     const omit = Symbol();
    
     function filter(obj, ids) {
       const item = obj.item
          .map(it => filter(it, ids))
          .filter(it => it !== omit);
    
       if(item.length || /* check if id is valid */) {
          return { ...obj, item };
       } else {
          return omit;
       }
     }