Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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 - Fatal编程技术网

JavaScript将嵌套数组/对象的数组指定为另一个对象的属性

JavaScript将嵌套数组/对象的数组指定为另一个对象的属性,javascript,Javascript,我有一个带有嵌套数组的对象的数组,如下所示: var category_tree = [ { category_id: 1, name: "A", children: [ { category_id: 2, name:" B, child of A", children: [ {

我有一个带有嵌套数组的对象的数组,如下所示:

var category_tree = [
    {
        category_id: 1,
        name: "A",
        children: [
            {
                category_id: 2,
                name:" B, child of A",
                children: [
                    {
                        category_id: 3,
                        name: "C, child of B",
                    }
                ]
            }

        ]
    }
]
{ 
    categories: []
    isFetching: false, 
    isValid: false, 
    currentFilter: "NAME_ASCENDING", 
    displayError: false, 
    errorMessage: ""
}
我想取另一个像这样的对象:

var category_tree = [
    {
        category_id: 1,
        name: "A",
        children: [
            {
                category_id: 2,
                name:" B, child of A",
                children: [
                    {
                        category_id: 3,
                        name: "C, child of B",
                    }
                ]
            }

        ]
    }
]
{ 
    categories: []
    isFetching: false, 
    isValid: false, 
    currentFilter: "NAME_ASCENDING", 
    displayError: false, 
    errorMessage: ""
}
并将“类别”属性设置为与此类别树对象相等

不幸的是,无论我尝试什么,我都会失去从儿童钥匙到钥匙的一切:

{ 
    categories: [{
        category_id: 1,
        name: "A",
        children: []
    }],
    isFetching: false, 
    isValid: false, 
    currentFilter: "NAME_ASCENDING", 
    displayError: false, 
    errorMessage: ""
}
这就是我的问题:如何将嵌套数组/对象指定为对象的属性

编辑:我尝试过的:

let newState = Object.assign({}, state, {                                                 
        isFetching: false,                                                                    
        valid: true,   
        categories: category_tree                                                   
    })

let newState = Object.assign({}, state, {
    isFetching: false,
    valid: true
})
newState.categories = category_tree
预期结果:

{ 
    categories: [
        {
            category_id: 1,
            name: "A",
            children: [
                {
                    category_id: 2,
                    name:" B, child of A",
                    children: [
                        {
                            category_id: 3,
                            name: "C, child of B",
                        }
                    ]
                }

            ]
        }
    ],
    isFetching: false, 
    isValid: false, 
    currentFilter: "NAME_ASCENDING", 
    displayError: false, 
    errorMessage: ""
}

我已经取消删除,以表明该片似乎做你想要的

newCat.categories = category_tree.slice(0);
像这样

变量类别树=[{ 类别识别号:1, 姓名:A,, 儿童:[{ category_id:2,//添加了一个逗号 姓名:B,A的孩子, 儿童:[{ 类别识别号:3, 姓名:C,B的孩子, }] } ] }] var newCat={ 类别:[],//添加了逗号 isFetching:false, isValid:false, currentFilter:NAME\u升序, 显示错误:false, 错误消息: } newCat.categories=category_tree.0
console.logJSON.stringifynewCat,null,2;请添加您尝试过的内容。还有想要的结果。@NinaScholz我已经编辑了答案以显示更多细节newcat.categories=category_tree.slice0;在修复了Typesslice之后,在这种情况下似乎仍然会丢失对象:console.logcategory_tree.slice0显示数组是空的。但是,u.cloneDeepcategory_树维护这些对象,但是当我尝试将它们分配给newState时,它们仍然丢失,即newState.categories=uu.cloneDeepcategory_tree@mplungjan我知道问题是相似的;但我不清楚如何处理嵌套在我正在复制的数组中的对象中的数组。我实际上知道如何复制一个对象数组,但是一个包含对象数组的对象数组似乎是个问题。这是JavaScript的非理性用例吗?我没有意识到这会有这么多麻烦,也许我应该重新设计API来发送更多的平面数据;至于解决方案,那不是只对类别中的一个索引有效吗?我想做的是将整个数组重新分配给这个新数组,在这个示例中,这个新数组中只有一个对象,但是可能有很多对象,哇,你是对的,对不起。在下一行的环境中,我将返回这个对象,这一定是一个操作,在该操作中我无意中改变了对象,导致我的控制台日志指向一个具有空子对象的对象,不管出于什么原因。看来我没能写出高质量的函数代码。非常感谢,你真是太好了!没问题,欢迎您: