我使用以下构造以排序顺序迭代我的对象。我希望将密钥保存在我的对象中,因为我希望能够直接访问属性。
var object = {
"1111": "value1111",
"300": "value300",
"2": "value2",
"4": "value4"
}
$.each(Object.keys(object).sort(function(a, b) {return a - b;}), function(index, key) {
value = object[key];
console.log(key + ': ' + value);
});
http://jsfiddle.net/qpjdv6hs/2/
没有jQuery:
var keys = Object.keys(object).sort(function(a, b) {return a - b;});
for (var index = 0; index < keys.length; index++) {
var key = keys[index];
var value = object[key];
console.log(key + ': ' + value);
}
http://jsfiddle.net/L69bsevb/1/
这是一个很好的方法吗或jQuery提供更好的东西?我如何创建自己的“$ .eachSorted”函数,使其像$ .each一样舒服?
修改
我想我成功了:
function eachSorted(object, sortCallback, callback) {
var keys = Object.keys(object).sort(sortCallback);
for (var i = 0; i < keys.length; i++) {
if (callback.call(object[keys[i]], keys[i], object[keys[i]]) === false)
break;
}
return object;
}
function mySort(a, b) {
return a - b;
}
var object = {
"1111": "value1111",
"300": "value300",
"2": "value2",
"4": "value4"
}
eachSorted(object, mySort, function(key, value) {
console.log(key + ': ' + value);
});
http://jsfiddle.net/y62Lqwhz/2/
有异议吗?