按类别对JavaScript对象排序,然后按类别消息排序
我有4个类别,必须按照我在下面的数组中定义的顺序显示。我试图按这些类别进行排序,然后按字母顺序对每个类别中的邮件进行排序 我在下面的代码中引入了for循环,但我不确定如何将已排序的消息添加回messagesL对象中,messagesL对象是传递给代码其余部分的对象。如有任何提示,将不胜感激 这是我的密码:按类别对JavaScript对象排序,然后按类别消息排序,javascript,arrays,internet-explorer,Javascript,Arrays,Internet Explorer,我有4个类别,必须按照我在下面的数组中定义的顺序显示。我试图按这些类别进行排序,然后按字母顺序对每个类别中的邮件进行排序 我在下面的代码中引入了for循环,但我不确定如何将已排序的消息添加回messagesL对象中,messagesL对象是传递给代码其余部分的对象。如有任何提示,将不胜感激 这是我的密码: PKG.render = function(work,PKG) { var data = work.details; var messagesL
PKG.render = function(work,PKG) {
var data = work.details;
var messagesL = new util.LocalDataSource(data);
messagesL.responseSchema = {
resultsList: "messages",
fields: [
"messageId",
"category",
"message"
]
};
/*there could be more categories, ignore them*/
var categories = ["Mentoring", "Availability", "Affordability", "Scalability", "Info"];
var messagesColumnDefs = [
{ key: "Id", label: "ID"},
{ key: "category", label: "Category"},
{ key: "message", label: "Text"}
];
var messagesConfig = { MSG_EMPTY: 'There are no messages to display.',
MSG_ERROR: 'Error while loading table'
};
var sortedMessagesByCategory;
for (var i = 0; i < categories.length; i++)
{
var messagesByCategory;
for(var j = 0; j < data.messages.length; j++)
{
if(data.messages[j].category === categories[i])
messagesByCategory.push(data.messages[j].message);
}
if(typeof messagesByCategory !== "undefined")
messagesByCategory.sort();
/*not sure how to add sorted messages back in messagesL object*/
}
messagesTable = new widget.DataTable('wrmessagesTable', messagesColumnDefs, messagesL, messagesConfig);
workResultsWidgetCollectionPush(messagesTable);
}
PKG.render=函数(工作,PKG){
var数据=工作细节;
var messagesL=new util.LocalDataSource(数据);
messagesL.responseSchema={
结果列表:“消息”,
字段:[
“消息ID”,
“类别”,
“消息”
]
};
/*可能会有更多的类别,忽略它们*/
风险值类别=[“指导”、“可用性”、“可承受性”、“可扩展性”、“信息”];
var messagesColumnDefs=[
{键:“Id”,标签:“Id”},
{键:“类别”,标签:“类别”},
{键:“消息”,标签:“文本”}
];
var messagesConfig={MSG_EMPTY:'没有要显示的消息',
MSG_ERROR:“加载表时出错”
};
var-sortedMessagesByCategory;
对于(变量i=0;i
。为什么不直接使用排序
功能而不是循环<代码>var sortedMessagesByCategory=data.messages.slice(0).sort((a,b)=>categories.indexOf(b.category)-categories.indexOf(a.category))
@CertainPerformance sort((a,b)=>)部分为我出错。赋值的左侧必须是一个变量,并且它也不喜欢=>。@CertainPerformance我修改了您的代码:var sortedMessagesByCategory=data.messages.slice(0).sort(函数(a,b){categories.indexOf(b.category)-categories.indexOf(a.category)});但这不是按类别排序,然后是按消息排序,这正是我想要的。分类到处都是。