test.ts 916 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. var allMediaTypeList = {
  2. a: {
  3. txt: '摄像头',
  4. priority: 1,
  5. },
  6. b: {
  7. txt: 'dfs',
  8. priority: 21,
  9. },
  10. c: {
  11. txt: '32',
  12. priority: 2,
  13. },
  14. d: {
  15. txt: 'abc',
  16. priority: 2,
  17. },
  18. };
  19. function objectSort(data: { obj; sortField; sort?: 'asc' | 'desc' }) {
  20. // 将对象转换为数组
  21. var entries = Object.entries(data.obj);
  22. entries.sort(function (a, b) {
  23. // @ts-ignore
  24. var res1 = a[1][data.sortField];
  25. // @ts-ignore
  26. var res2 = b[1][data.sortField];
  27. if (data.sort === 'desc') {
  28. return res2 - res1;
  29. } else {
  30. return res1 - res2;
  31. }
  32. });
  33. // 将排序后的数组转换回对象
  34. var sortedMediaTypeList = {};
  35. for (var i = 0; i < entries.length; i++) {
  36. sortedMediaTypeList[entries[i][0]] = entries[i][1];
  37. }
  38. return sortedMediaTypeList;
  39. }
  40. console.log(
  41. objectSort({ obj: allMediaTypeList, sortField: 'priority', sort: 'desc' })
  42. );