排序地图对象的角度

时间:2019-04-04 08:24:10

标签: javascript angular typescript

我有一个问题: 我创建了一个键值列表,我想按降序对其进行排序。 如果您注意到了,在堆叠闪电战中,我举了一个示例,说明如何创建列表以及尝试对列表进行排序的方法。但结果始终相同(以降序排列)

n.b:我需要一个键值列表而不是一个数组

堆栈: https://stackblitz.com/edit/angular-a1yfkd

1 个答案:

答案 0 :(得分:0)

  

我创建了一个键值列表,我想按降序对其进行排序

做到这一点的一种方法是

  1. 将地图的键作为字符串数组,
  2. 对键进行排序(如果需要,您可以通过自定义排序功能)
  3. 填充一个遍历已排序键的新对象并将其返回

这对您有用吗?

const unsortedList: any = {
  z: 'last',
  b: '2nd',
  a: '1st',
  c: '3rd'
};

function sort(unsortedList: any): any {
  const keys: string[] = Object.keys(unsortedList);
  const sortedKeys = keys.sort().reverse(); //reverse if you need or not
  const sortedList: any = {};
  sortedKeys.forEach(x => {
    sortedList[x] = unsortedList[x];
  });
  return sortedList;
}

function sortWithoutUselessVariables(unsortedList: any): any {
    const sortedList: any = {};
    Object.keys(unsortedList)
      .sort() // or pass a custom compareFn there, faster than using .reverse()
      .reverse()
      .forEach(x => sortedList[x] = unsortedList[x])
    return sortedList;
}

console.log('unsorted:', unsortedList);
console.log('sorted:', sort(unsortedList));