微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何按键名对对象数组进行动态排序? - 名称仅因数字字符而异

如何解决如何按键名对对象数组进行动态排序? - 名称仅因数字字符而异

这是我要获取的对象数组(源不是我的,所以我无法以任何方式更改此数据服务器端的结构)。

[
  { phase4: 3 },{ phase3: 4 },{ phase2: 14 },{ phase1: 46 },{ phase6: 12 },{ phase5: 1 }
]

有没有办法将给定的数组动态排序为以下内容

[
  { phase1: 46 },{ phase4: 3 },{ phase5: 12 },{ phase6: 1 },]

更新

enter image description here

解决方法

您可以使用自定义排序算法进行排序。您只需要使用 Object.keys(obj)[0]

获取密钥

const arr = [
  { phase4: 3 },{ phase3: 4 },{ phase2: 14 },{ phase1: 46 },{ phase6: 12 },{ phase5: 1 },];

const result = arr.sort((a,b) => {
  const prop1 = Object.keys(a)[0];
  const prop2 = Object.keys(b)[0];
  
  if (prop1 < prop2) return -1;
  if (prop1 > prop2) return 1;
  return 0;
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

,

您可以从每个对象的键中获取数字并使用数字 sort()

const d=[
  { phase4: 3 },{ phase11: 11 },{ phase22: 22 }
]

const keyNum = (e) => Object.keys(e)[0].match(/\d+$/)[0];

const res = d.sort((a,b) => keyNum(a) - keyNum(b))

console.log(res)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。