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来发送更多的平面数据;至于解决方案,那不是只对类别中的一个索引有效吗?我想做的是将整个数组重新分配给这个新数组,在这个示例中,这个新数组中只有一个对象,但是可能有很多对象,哇,你是对的,对不起。在下一行的环境中,我将返回这个对象,这一定是一个操作,在该操作中我无意中改变了对象,导致我的控制台日志指向一个具有空子对象的对象,不管出于什么原因。看来我没能写出高质量的函数代码。非常感谢,你真是太好了!没问题,欢迎您: