【发布时间】:2021-03-10 07:32:44
【问题描述】:
我想通过它的子数组对我的对象进行排序。
let partners = [
{
Name: "A",
Sectors: [
{ Code: "AA1", Total: 10 },
{ Code: "AA2", Total: 70 }
]
},
{
Name: "B",
Sectors: [
{ Code: "AA1", Total: 20 },
{ Code: "AA2", Total: 60 }
]
},
{
Name: "C",
Sectors: [
{ Code: "AA1", Total: 40 },
{ Code: "AA2", Total: 50 }
]
}
];
假设我想按Code = AA1 DESC 所在的支柱部门进行排序。结果(道具名称)将是:
C、B、A
或者如果我需要Code = AA2 DESC,将是 A、B、C
我遇到了一些像这样的简单排序的困难:
let sorted = partners.sort((a, b) => a.Sectors.Total - b.Sectors.Total);
sorted.forEach((sortedData) => console.log(sortedData));
这里是正确的答案,将 acept empty 改为 acept empty。
let partners = [
{"Name":"E","Sectors": null},
{"Name":"A","Sectors":[{"Code":"AA1","Total":10},{"Code":"AA2","Total":70}]},
{"Name":"B","Sectors":[{"Code":"AA1","Total":20},{"Code":"AA2","Total":60}]},
{"Name":"C","Sectors":[{"Code":"AA1","Total":40},{"Code":"AA2","Total":50}]},
{"Name":"D","Sectors": null},
{"Name":"P","Sectors": []}
]
partners.sort((a, b) => {
const get = (arr, key, val) => {
return arr.find(o => o[key] === val) || {};
}
let sA = {}, sB = {}
try {
sA = get(a.Sectors, 'Code', 'AA1')
sB = get(b.Sectors, 'Code', 'AA1')
} catch (e) {}
return !!sB.Total - !!sA.Total || sB.Total - sA.Total
})
console.log(partners)
【问题讨论】:
标签: javascript node.js arrays json sorting