【发布时间】:2018-09-23 12:45:25
【问题描述】:
我有一个包含嵌套数组的对象的数组,如下所示:
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_tree 对象。
不幸的是,无论我尝试什么,我都失去了孩子们的一切:
{
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: ""
}
【问题讨论】:
-
请添加您尝试过的内容。和想要的结果。
-
@NinaScholz 我已编辑答案以显示更多详细信息
-
newCat.categories = category_tree.slice(0);修正错别字后 -
在这种情况下,Slice 似乎仍然丢失了对象:
console.log(category_tree.slice(0))表明数组是空的。但是,_.cloneDeep(category_tree)维护对象,但是当我尝试将其分配给 newState 时,它们仍然丢失,即。newState.categories = _.cloneDeep(category_tree) -
@mplungjan 我知道问题是相似的;但我不清楚如何处理嵌套在我正在复制的数组中的对象中的数组。我实际上知道如何复制对象数组,但是对象数组和对象数组似乎是问题所在。这是 JavaScript 的不合理用例吗?没想到会这么麻烦,也许我应该重新设计 API 以发送更多平面数据。
标签: javascript