Javascript 嵌套对象的排序数组
我有以下数据结构,我想按“位置”对它们进行排序 这是我到目前为止所做的尝试,我可以对外部对象进行排序,但我不能对\u部分下的组件\u进行排序。我错过什么了吗?提前谢谢Javascript 嵌套对象的排序数组,javascript,Javascript,我有以下数据结构,我想按“位置”对它们进行排序 这是我到目前为止所做的尝试,我可以对外部对象进行排序,但我不能对\u部分下的组件\u进行排序。我错过什么了吗?提前谢谢 array.sort( (a, b) => { let compAPosition = a[Object.keys(a)[0]]["position"]; let compBPosition = b[Object.keys(b)[0]]["position"]; if(a.components_under_se
array.sort( (a, b) => {
let compAPosition = a[Object.keys(a)[0]]["position"];
let compBPosition = b[Object.keys(b)[0]]["position"];
if(a.components_under_section.length){
a.components_under_section.sort ( (c, d) => {
let compCPosition = c[Object.keys(c)[0]]["position"];
let compDPosition = d[Object.keys(d)[0]]["position"];
return ( compCPosition > compDPosition ? 1 : ((compDPosition > compCPosition ) ? -1 : 0 ) );
})
}
return ( compAPosition > compBPosition ? 1 : ((compBPosition > compAPosition ) ? -1 : 0 ) );
})
所需的输出(在_部分下按组件_排序,然后按外部对象排序):
您可以通过回调按位置排序,直接对外部数组进行排序,然后在\u部分下对内部数组进行迭代和排序
const sortByPosition = (a, b) => a.position - b.position
array.sort(sortByPosition);
array.forEach(({ components_under_section }) => components_under_section.sort(sortByPosition));
你能发布你想要的输出吗?
a[Object.keys(a)[0]]
应该做什么?@JonasW。我想它应该获取与a
的第一个属性对应的值,尽管这是一个糟糕的想法。@JonasW。是的,它是一个IDNumber,通常没有“位置”属性。。。
[
{
"id": 53,
"position": 1,
"components_under_section": [
{
"id": 113,
"position": 1
},
{
"id": 112,
"position": 2
}
]
},
{
"id": 52,
"position": 2,
"components_under_section": [
{
"id": 123,
"position": 1
},
{
"id": 122,
"position": 2
}
]
}
]
const sortByPosition = (a, b) => a.position - b.position
array.sort(sortByPosition);
array.forEach(({ components_under_section }) => components_under_section.sort(sortByPosition));