Javascript:多值排序

时间:2013-01-21 04:27:23

标签: javascript sorting rdbms multiple-columns

我有一个问题,理想情况下由RDBMS处理,但我需要在Javascript中。我打算使用谷歌的齿轮,但我发现它已经不再开发了。

我可以通过以下哪些方法实现以下目标?

我有很多产品作为JSON对象。每个都有3个我想要排序的属性,我希望能够更改哪个属性在其他属性之前排序。在SQL中,我可能写了order by weight, height, power或其他组合。

解决方案越强大越好,因为我可能希望扩展需求,所有这些都更容易被RDBMS处理,但我只想知道客户端选项,因为我将回归使用服务器端RDBMS,如果绝对必要的话。

由于

编辑:想想看,使用Array.sort(sortFn)实际上可能很简单?...

2 个答案:

答案 0 :(得分:1)

感谢亚当和每个人,我会记住那些因为我的需求在不断变化的时候。无论如何,这是我提出的解决方案......

function compare(a, b){
    var weight =    a.weight - b.weight;
    var power  =    a.power  - b.power;
    var height =    a.height - b.height;

    if (weight)  return weight;
    if (power)    return power;
    if (height)   return height;
    return 0;
};
objArr.sort(compare);

再次感谢

答案 1 :(得分:0)

Javascript多标准/多参数排序

执行javascript多标准排序的最简单方法是连接标准并将它们比较为2个字符串。

function sortByCriteria(data, criteria) {
    return data.sort(function (a, b) {

        var i, iLen, aChain, bChain;

        i = 0;
        iLen = criteria.length;
        for (i; i < iLen; i++) {        
            aChain += a[criteria[i]];
            bChain += b[criteria[i]];
        }

        return aChain.localeCompare(bChain);
    });
}

http://jsfiddle.net/oahxg4u3/6/