我正在尝试对对象键进行排序。
但是当我打印我的对象时,它总是首先打印bb
。有谁能解释一下?
应先打印aa
吗?我已经把钥匙分类了。
我的第一个密钥应为aa
,然后第二个密钥应为bb
。
这是我的代码
var data = {
bb:"bb",
aa:"cc"
};
Object
.keys(data)
.sort();
console.log(data)
答案 0 :(得分:3)
两件事:
Object.keys
返回一个对象键数组,它不会修改对象本身,请参阅以下示例:
var data={bb:"bb",aa:"cc"};
var arr = Object.keys(data);
arr.sort();
console.log(arr); // the array IS modified,
// but it has nothing to do with the original object
答案 1 :(得分:0)
试试这个
var data={bb:"bb",aa:"cc"};
var keys = Object.keys(data);
keys.sort();
var obj = {};
for(i = 0; i < keys.length; i++){
obj[keys[i]] = data[keys[i]];
}
console.log(obj);
答案 2 :(得分:0)
没有任何方法可以在JavaScript中对对象键进行排序,但是可以通过这样的对象原型来实现。
Object.prototype.sortKeys = function () {
var sorted = {},
key, a = [];
for (key in this) {
if (this.hasOwnProperty(key)) {
a.push(key);
}
}
a.sort();
for (key = 0; key < a.length; key++) {
sorted[a[key]] = this[a[key]];
}
return sorted;
}
var data = {bb: "bb", aa :"cc"};
alert(JSON.stringify(data.sortKeys())); // Returns sorted object data by their keys