我有一个包含嵌套数组的对象的数组,如下所示:
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: ""
}
答案 0 :(得分:1)
我已取消删除,表明切片似乎做了你想做的事情
newCat.categories = category_tree.slice(0);
喜欢这个
var category_tree = [{
category_id: 1,
name: "A",
children: [{
category_id: 2, // added a comma
name: " B, child of A",
children: [{
category_id: 3,
name: "C, child of B",
}]
}
]
}]
var newCat = {
categories: [], // added a comma
isFetching: false,
isValid: false,
currentFilter: "NAME_ASCENDING",
displayError: false,
errorMessage: ""
}
newCat.categories = category_tree.slice(0)
console.log(JSON.stringify(newCat,null, 2));