按相同名称排序,然后按字母顺序排列

时间:2015-05-12 14:01:12

标签: jquery sorting

我有一个这个值'Мебельноепроизводство'我有一张桌子,其中包含所有相关的项目,其中包含'Мебельноепроизводство'的巧合。

到目前为止,我按照字母方式对其进行排序,但是我需要在表格上返回与“Мебельноепроизводство”的值完全一致,其余的按字母方式返回。

到目前为止,我被困在这里:

jQuery(".orderings tr").sort(sort).appendTo('.orderings');
function sort(a, b){
    return (jQuery(b).text()) < (jQuery(a).text()) ? 1 : -1;    
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您需要进行第一次比较,然后进行alpha排序

这个不会对比赛进行排序:

jQuery(".orderings tr").sort(sort).appendTo('.orderings');
var match = "Мебельное производство";
function sort(a, b) {
    var at = jQuery(a).text();
    var bt = jQuery(b).text();
    if (at.indexOf(match) >= 0)
    {
        return -1;  // force to the top
    }
    return (bt < at) ? 1 : -1;
}

这个也做了匹配的初始排序:

function sort(a, b) {
    var at = jQuery(a).text();
    var bt = jQuery(b).text();
    console.log(at.indexOf(match));
    if (at.indexOf(match) >= 0 && bt.indexOf(match) < 0) {
        return -1;
    } else if (bt.indexOf(match) >= 0 && at.indexOf(match) < 0) {
        return 1;
    }
    return (bt < at) ? 1 : -1;
}

var match = "Мебельное производство";
jQuery(".orderings tr").sort(sort).appendTo('.orderings');

JSFiddle: http://jsfiddle.net/s7nb5o6g/5/

注意:由于排序顺序的副作用,不应要求else if测试,但保留它并没有坏处。例如http://jsfiddle.net/s7nb5o6g/6/仍有效

答案 1 :(得分:0)

这部分代码可以帮助您:

jQuery(".orderings tr").sort(sort).appendTo('.orderings');
function sort(a, b){
    // if a contains Мебельное производство, and b does not contain it, return -1
    // if b contains Мебельное производство, and a does not contain it, return 1
    // else proceed normally
    return (jQuery(b).text()) < (jQuery(a).text()) ? 1 : -1;    
}