我有一个关联数组
,我需要按特定顺序对其进行排序。每个对象都有一个description
键。这是我要重新排列的当前数组。
[{
id: "1",
permission: "Administer Source List",
description: "Data Source",
OrgAdmin: "*",
DataAdmin: "*",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "2",
permission: "Administer Common Layers",
description: "Data Source",
OrgAdmin: "*",
DataAdmin: "*",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "7",
permission: "Create Campaigns",
description: "Campaigns",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "8",
permission: "Access/modify campaign setup",
description: "Campaigns",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "*",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "11",
permission: "View Reports",
description: "Reports",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "*",
APTUser: "",
UserAdmin: ""
},
{
id: "12",
permission: "Modify prebuilt reports",
description: "Reports",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "16",
permission: "Create portfolio",
description: "APT",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "17",
permission: "Access all portfolios (at org)",
description: "APT",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "*",
UserAdmin: ""
},
{
id: "20",
permission: "Administer role templates for org",
description: "Manage Users",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "21",
permission: "Add/edit/delete non org-admin users at org",
description: "Manage Users",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: "*"
},
{
id: "25",
permission: "Administer organizations & survey programs",
description: "ABC Admin functions",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "26",
permission: "Administer all users in system",
description: "ABC Admin functions",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
permission: "Data Source",
description: "Data Source",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
permission: "Campaigns",
description: "Campaigns",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
permission: "Reports",
description: "Reports",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
permission: "APT",
description: "APT",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
permission: "Manage Users",
description: "Manage Users",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
permission: "ABC Admin functions",
description: "ABC Admin functions",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
}
];
我想将数组改造成这样:
[{
permission: "Data Source",
description: "Data Source",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "1",
permission: "Administer Source List",
description: "Data Source",
OrgAdmin: "*",
DataAdmin: "*",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "2",
permission: "Administer Common Layers",
description: "Data Source",
OrgAdmin: "*",
DataAdmin: "*",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
permission: "Campaigns",
description: "Campaigns",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "7",
permission: "Create Campaigns",
description: "Campaigns",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "8",
permission: "Access/modify campaign setup",
description: "Campaigns",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "*",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
permission: "Reports",
description: "Reports",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "11",
permission: "View Reports",
description: "Reports",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "*",
APTUser: "",
UserAdmin: ""
},
{
id: "12",
permission: "Modify prebuilt reports",
description: "Reports",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
permission: "APT",
description: "APT",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "16",
permission: "Create portfolio",
description: "APT",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "17",
permission: "Access all portfolios (at org)",
description: "APT",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "*",
UserAdmin: ""
},
{
permission: "Manage Users",
description: "Manage Users",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "20",
permission: "Administer role templates for org",
description: "Manage Users",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "21",
permission: "Add/edit/delete non org-admin users at org",
description: "Manage Users",
OrgAdmin: "*",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: "*"
},
{
permission: "ABC Admin functions",
description: "ABC Admin functions",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "25",
permission: "Administer organizations & survey programs",
description: "ABC Admin functions",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
},
{
id: "26",
permission: "Administer all users in system",
description: "ABC Admin functions",
OrgAdmin: "",
DataAdmin: "",
SetupAdmin: "",
DataConsumer: "",
APTUser: "",
UserAdmin: ""
}
];
我可以使用description
键来实现这一点吗?
最佳答案
您可以制作描述及其顺序的 map 。在您的 sort
比较器中使用该映射,尝试以下操作:
let arr = [ { id: "1", permission: "Administer Source List", description: "Data Source", OrgAdmin: "*", DataAdmin: "*", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { id: "2", permission: "Administer Common Layers", description: "Data Source", OrgAdmin: "*", DataAdmin: "*", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { id: "7", permission: "Create Campaigns", description: "Campaigns", OrgAdmin: "*", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { id: "8", permission: "Access/modify campaign setup", description: "Campaigns", OrgAdmin: "*", DataAdmin: "", SetupAdmin: "*", DataConsumer: "", APTUser: "", UserAdmin: "" }, { id: "11", permission: "View Reports", description: "Reports", OrgAdmin: "*", DataAdmin: "", SetupAdmin: "", DataConsumer: "*", APTUser: "", UserAdmin: "" }, { id: "12", permission: "Modify prebuilt reports", description: "Reports", OrgAdmin: "*", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { id: "16", permission: "Create portfolio", description: "APT", OrgAdmin: "", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { id: "17", permission: "Access all portfolios (at org)", description: "APT", OrgAdmin: "*", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "*", UserAdmin: "" }, { id: "20", permission: "Administer role templates for org", description: "Manage Users", OrgAdmin: "*", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { id: "21", permission: "Add/edit/delete non org-admin users at org", description: "Manage Users", OrgAdmin: "*", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "*" }, { id: "25", permission: "Administer organizations & survey programs", description: "ABC Admin functions", OrgAdmin: "", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { id: "26", permission: "Administer all users in system", description: "ABC Admin functions", OrgAdmin: "", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { permission: "Data Source", description: "Data Source", OrgAdmin: "", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { permission: "Campaigns", description: "Campaigns", OrgAdmin: "", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { permission: "Reports", description: "Reports", OrgAdmin: "", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { permission: "APT", description: "APT", OrgAdmin: "", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { permission: "Manage Users", description: "Manage Users", OrgAdmin: "", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" }, { permission: "ABC Admin functions", description: "ABC Admin functions", OrgAdmin: "", DataAdmin: "", SetupAdmin: "", DataConsumer: "", APTUser: "", UserAdmin: "" } ];
let map = {
"Data Source" : 1,
"Campaigns" : 2,
"Reports" : 3,
"APT" : 4,
"Manage Users" : 5,
"ABC Admin functions" : 6,
};
arr.sort((a,b) => map[a.description] - map[b.description]);
console.log(arr);
关于javascript - 如何在 Javascript 中按特定顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51978948/