分享

js 区域性或者本地化字符串比较

 woshishenxiande 2011-05-13

    var lastSortHeaderTD;
    var sortIndex;
    var tableID = "xx";
    var trs = $(tableID).subTag("tr");
    trs.shift();
    function mySort(index, type,td) {
        var className = td.getAttribute("class");
        if (lastSortHeaderTD) {
            if (lastSortHeaderTD == td) {
               if (className == "sort_asc")
                   td.className = "sort_desc";
               else
                   td.className = "sort_asc";
            }
            else {
               lastSortHeaderTD.className = "";
               td.className = "sort_asc";
            }
        }
        else
            td.className = "sort_asc";
        lastSortHeaderTD = td;
        if (index == sortIndex)
           trs.reverse();
        else
           trs.sort(getSortFun(index, type));
        var df = document.createDocumentFragment();
        for (var i = 0; i < trs.length; i++) {
            if (i > 0 && trs.length % 2 == 1) {
               if (i % 2 == 0) {
                   trs[i].className = "grid3_row grid3_row_alt";
               }
               else {
                   trs[i].className = "grid3_row";
               }
            }
           df.appendChild(trs[i]);
        }
       $(tableID).tBodies[0].appendChild(df);
       
        sortIndex = index;
    }
    function getSortFun(index, type) {
        var convertType = function(value, type) {
            switch (type) {
               case "int":
                   return parseInt(value);
               case "float":
                   return parseFloat(value);
               case "date":
                   return new Date(Date.parse(value));
               default:
                   // return value.toString();

             改为,

var a=tr1.cells[index].firstChild.firstChild.nodeValue;

var b=tr2.cells[index].firstChild.firstChild.nodeValue;

return a.localeCompare(b);

           }
        };
        //
行完整
        return function(tr1, tr2) {
            var v1 = convertType(tr1.cells[index].firstChild.firstChild.nodeValue, type);
            var v2 = convertType(tr2.cells[index].firstChild.firstChild.nodeValue, type);
            if (v1 < v2)
               return -1;
            else if (v1 > v2)
               return 1;
            else
               return 0;
        }
    }




定义和用法

用本地特定的顺序来比较两个字符串。

语法

stringObject.localeCompare(target)
参数 描述
target 要以本地特定的顺序与 stringObject 进行比较的字符串。

返回值

说明比较结果的数字。如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。如果 stringObject 大于 target,则该方法返回大于 0 的数。如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。

说明

把 < 和 > 运算符应用到字符串时,它们只用字符的 Unicode 编码比较字符串,而不考虑当地的排序规则。以这种方法生成的顺序不一定是正确的。例如,在西班牙语中,其中字符 “ch” 通常作为出现在字母 “c” 和 “d” 之间的字符来排序。

localeCompare() 方法提供的比较字符串的方法,考虑了默认的本地排序规则。ECMAscript 标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。

实例

在本例中,我们将用本地特定排序规则对字符串数组进行排序:

var str;
str.sort (function(a,b){return a.localeCompare(b)})


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多