带有排序对象键的jQuery $ .each

时间:2014-10-27 08:07:55

标签: javascript jquery sorting object each

我使用以下构造以排序顺序迭代我的对象。我希望将密钥保存在我的对象中,因为我希望能够直接访问属性。

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/

有异议吗?

0 个答案:

没有答案