我正在通过按outlook电子邮件的对话id对其列表进行分组来重新创建outlook邮箱的效果。但是,我需要对列表进行两次排序,以便每组中的电子邮件从最新电子邮件到最旧电子邮件排序,而且对话列表本身也需要从最旧到最新排序。由于对话是数组,因此需要使用数组中的第一个项(排序后应该是该数组中最新的项)来进行此数组比较。
分组后的对象如下所示:
{"sdfjskldfjks" : [{from: "joe", received_date:"07/11/1990 5:30PM"}], "dfjsakldfjhsa" : [{from: "john", received_date:"07/12/1990 5:30PM"},{from: "jake", received_date:"07/12/1989 5:30PM"}]}
我用来进行此分组的函数如下:
const cleanFolder = computed(() => {
if(currentFolder.value == null){
return []
}
function groupBy(arr: any[], property: string) {
return arr.reduce(function (memo: { [x: string]: any[]; }, x: { [x: string]: string | number; }) {
if (!memo[x[property]]) { memo[x[property]] = []; }
memo[x[property]].push(x);
return memo;
}, {});
};
return groupBy(currentFolder.value.emails,'conversation_id')
})
我知道如何对数组进行排序,但我需要根据所示的对象进行排序,所以我一无所知!