gpt4 book ai didi

javascript - 按子对象属性排序对象

转载 作者:数据小太阳 更新时间:2023-10-29 04:44:54 27 4
gpt4 key购买 nike

我有一个对象的对象,我想按属性对它进行排序......我在思考它时遇到了一些麻烦:

sample = {
"Elem1": { title: "Developer", age: 33 },
"Elem2": { title: "Accountant", age: 24 },
"Elem3": { title: "Manager", age: 53 },
"Elem4": { title: "Intern", age: 18}
}

我的预期结果是一个对象,其键现在顺序为 Elem4、Elem2、Elem1、Elem3。或者,我可以简单地按该顺序返回键而不是对对象进行物理排序。

这是否比它的值(value)更麻烦,或者我是否遗漏了一些明显的(或不太明显的)JavaScript-Fu 可以轻松完成这样的事情?

谢谢!

最佳答案

对象的属性(键)不是本质上有序的;如果您愿意,您必须维护自己的排序数组。

这是一个示例,说明如何通过自定义排序函数按任意属性简化示例对象的排序:

var orderKeys = function(o, f) {
var os=[], ks=[], i;
for (i in o) {
os.push([i, o[i]]);
}
os.sort(function(a,b){return f(a[1],b[1]);});
for (i=0; i<os.length; i++) {
ks.push(os[i][0]);
}
return ks;
};

orderKeys(sample, function(a, b) {
return a.age - b.age;
}); // => ["Elem4", "Elem2", "Elem1", "Elem3"]

orderKeys(sample, function(a, b) {
return a.title.localeCompare(b.title);
}); // => ["Elem2", "Elem1", "Elem4", "Elem3"]

一旦属性按照您的喜好排序,您就可以迭代它们并按顺序检索相应的值。

关于javascript - 按子对象属性排序对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6054380/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com