【发布时间】:2019-04-17 11:04:26
【问题描述】:
我有 JSON,每个记录属性都有单独的对象,我想按属性动态排序。
我设法用属性进行排序,但它是静态代码。我怎样才能使它动态呢?
请在https://jsfiddle.net/b8fv4L1z/3/上找到运行代码
var json = [
[
{
"apiName": "Name",
"value": "Bob"
},
{
"apiName": "CompanyName",
"value": "Google"
}
],
[
{
"apiName": "Name",
"value": "Micky"
},
{
"apiName": "CompanyName",
"value": "Amazon"
}
],
[
{
"apiName": "Name",
"value": "Donal"
},
{
"apiName": "CompanyName",
"value": "Facebook"
}
]
];
function Comparator(a, b, ) {
if (a[1].value < b[1].value) return -1; // a[1] sort by CompanyName If I put a[0] it will sort by Name.
if (a[1].value > b[1].value) return 1; // a[1] sort by CompanyName If I put a[0] it will sort by Name.
return 0;
}
json = json.sort(Comparator);
console.log(JSON.stringify(json));
预期结果:
(按 apiName = CompanyName 排序):
[[{"apiName":"Name","value":"Micky"},{"apiName":"CompanyName","value":"Amazon"}],[{"apiName":"Name","value":"Donal"},{"apiName":"CompanyName","value":"Facebook"}],[{"apiName":"Name","value":"Bob"},{"apiName":"CompanyName","value":"Google"}]]
(按 apiName = 名称排序):
[[{"apiName":"Name","value":"Bob"},{"apiName":"CompanyName","value":"Google"}],[{"apiName":"Name","value":"Donal"},{"apiName":"CompanyName","value":"Facebook"}],[{"apiName":"Name","value":"Micky"},{"apiName":"CompanyName","value":"Amazon"}]]
【问题讨论】:
-
请同时添加想要的结果。按
name排序的规则是什么?你有嵌套数组。排序应该在哪个数组上进行? -
作为,我有更新。预期结果应该是简短的属性。我可以设法按静态值进行排序。我想让它动态化。目前我有两个属性(名称和公司名称),将来我有多个属性。我如何动态地制作它。
标签: javascript arrays json sorting