【发布时间】:2013-12-20 08:16:46
【问题描述】:
我在对对象内的项目进行排序时遇到了一些问题。所以我有这样的事情:
var someObject = {
'type1': 'abc',
'type2': 'gty',
'type3': 'qwe',
'type4': 'bbvdd',
'type5': 'zxczvdf'
};
我想按值对 someObject 进行排序,这就是我遇到问题的地方。 我有排序函数应该返回按值排序的键/值对:
function SortObject(passedObject) {
var values = [];
var sorted_obj = {};
for (var key in passedObject) {
if (passedObject.hasOwnProperty(key)) {
values.push(passedObject[key]);
}
}
// sort keys
values.sort();
// create new object based on Sorted Keys
jQuery.each(values, function (i, value) {
var key = GetKey(passedObject, value);
sorted_obj[key] = value;
});
return sorted_obj;
}
以及获取密钥的功能:
function GetKey(someObject, value) {
for (var key in someObject) {
if (someObject[key] === value) {
return key;
}
}
}
问题在于创建新的返回对象时的最后一部分 - 它再次按键排序。为什么?这是我必须对对象而不是数组进行操作时的特定情况(是的,我知道这会更容易......)
有人知道如何对对象中的项目进行排序吗?
【问题讨论】:
-
没有理由对对象进行排序。对象的属性始终按字母顺序显示。
-
此键/值对是下拉列表的提要。该列表应按值排序。我不知道如何实现这一点。
-
数组排序是有效的,但你的是一个对象
-
我知道。我认为这是可能的。正如我在一些教程中看到的那样,javascript 对象没有排序 - 但我的是。无论以哪种顺序,它都按键对数组进行排序。
标签: javascript sorting