问题描述
这是我要获取的对象数组(源不是我的,所以我无法以任何方式更改此数据服务器端的结构)。
[
{ phase4: 3 },{ phase3: 4 },{ phase2: 14 },{ phase1: 46 },{ phase6: 12 },{ phase5: 1 }
]
有没有办法将给定的数组动态排序为以下内容?
[
{ phase1: 46 },{ phase4: 3 },{ phase5: 12 },{ phase6: 1 },]
更新
解决方法
您可以使用自定义排序算法进行排序。您只需要使用 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)