通过包含数组值而不是字符串1的属性对对象进行排序

时间:2013-11-14 23:55:29

标签: javascript arrays sorting

假设我有以下格式的数据:

[
    {
        foo: "a",
        bar: 5,
        baz: [
            "qux doo",
            "adsf",
            "abcd",
            "zzzz",
            "898jwe9"
        ],
    },
            {
        foo: "f",
        bar: 4859,
        baz: [
            "abcd",
            "xxrwu",
            "urnr",
            "pupupu",
            "sdsdsd"
        ],
    },
]

假设我想按foo对此数组进行排序。这很简单:

.sort(function(a, b){ return (a.foo < b.foo) - (a.foo > b.foo); });

但如果我想按baz排序呢?如何做到这一点?

1 个答案:

答案 0 :(得分:0)

.sort(function(a, b) {
    for (var i = 0; i < Math.min(a.baz.length, b.baz.length); i++) {
        if (a.baz[i] < b.baz[i]) return -1;
        if (a.baz[i] > b.baz[i]) return 1;
    } 
    return (a.baz.length > b.baz.length) - (a.baz.length < b.baz.length); 
});