Javascript 未处理的拒绝(TypeError):无法读取属性';儿童';未定义的
我正在尝试使用axios从RESTAPI获取数据 我想将数据存储在数组中,并附加新的属性子项 但我犯了一个错误 这是我的密码:Javascript 未处理的拒绝(TypeError):无法读取属性';儿童';未定义的,javascript,reactjs,axios,Javascript,Reactjs,Axios,我正在尝试使用axios从RESTAPI获取数据 我想将数据存储在数组中,并附加新的属性子项 但我犯了一个错误 这是我的密码: var categoriesTree = {}; axios.get('https://akkar.market/wp-json/wp/v2/job_listing_category?per_page=100') .then(response => { categoriesTree = response.data categoriesTree.forEac
var categoriesTree = {};
axios.get('https://akkar.market/wp-json/wp/v2/job_listing_category?per_page=100')
.then(response => {
categoriesTree = response.data
categoriesTree.forEach(category => {
if (category.parent === 0) {
if (!(category.id in categoriesTree)) {
categoriesTree[category.id] = {'name': category.name, 'children': []};
} else {
categoriesTree[category.id]['name'] = category.name;
}
} else {
if (!category.parent in categoriesTree) {
categoriesTree['parent'] = {'name': '', 'children': []};
}
categoriesTree['parent']['children'].push({'name': category.name, 'id': category.id});
}
})
})
console.log(categoriesTree)
我得到这个错误:
我不确定,如果(!category.parent in categoriesTree)下的
是什么意思,但它看起来总是会返回false
。如果(!categoriesTree.parent)
,请尝试将此条件更改为,我想它会起作用。看起来有几个问题:
在中!category.parent在categoriesTree
中,您需要使用category.parent
的逻辑NOT(将是true
或false
),并在操作中使用该结果。在
表达式:中的周围需要()
!(category.parent在categoriesTree中)
即使进行了修订,也会在categoriesTree
中检查名称为category.parent
值的属性。但是,然后创建一个名为parent
的属性,而不是名为category.parent
的属性
如果属性应该是category.parent的值,请使用该属性而不是的“parent”
:
if (!(category.parent in categoriesTree)) {
categoriesTree[category.parent] = {'name': '', 'children': []};
}
categoriesTree[category.parent]['children'].push({'name': category.name, 'id': category.id});
如果它应该被称为parent
(字面意思),那么请一致地使用它:
if (!("parent" in categoriesTree)) {
categoriesTree.parent = {'name': '', 'children': []};
}
categoriesTree.parent['children'].push({'name': category.name, 'id': category.id});
if (!categoriesTree.parent)) {
categoriesTree.parent = {'name': '', 'children': []};
}
categoriesTree.parent['children'].push({'name': category.name, 'id': category.id});
如果categoriesTree
没有名为x
的属性,或者该属性将有一个对象引用作为值,则可以使用If(!categoriesTree.x
)而不是If(!(“x”在categoriesTree中))`。将其应用于上述两个选项:
if (!categoriesTree[category.parent])) {
categoriesTree[category.parent] = {'name': '', 'children': []};
}
categoriesTree[category.parent]['children'].push({'name': category.name, 'id': category.id});
如果它应该被称为parent
(字面意思),那么请一致地使用它:
if (!("parent" in categoriesTree)) {
categoriesTree.parent = {'name': '', 'children': []};
}
categoriesTree.parent['children'].push({'name': category.name, 'id': category.id});
if (!categoriesTree.parent)) {
categoriesTree.parent = {'name': '', 'children': []};
}
categoriesTree.parent['children'].push({'name': category.name, 'id': category.id});
尝试记录categoriesTree['parent']
并查看它有什么我的猜测是categoriesTree.parent
不值得0,但也不值得Array
。我尝试了,但它在这一行categoriesTree['parent']['children']上仍然给我错误。push({'name':category.name,'id':category.id});哦,对不起,我在回答中犯了一个错误,不是如果(!category.parent)
而是如果(!categoriesTree.parent)
:)