JS对省市按首字母排序

/**
 * 省市拼音排序
 */
function pySegSort(arr, empty) {
    if(!String.prototype.localeCompare)
        return null;
    var letters = "*ABCDEFGHJKLMNOPQRSTWXYZ".split('');
    var zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split('');
    var segs = [];// 存放数据
    var py = [];// 存放首字母
    var res = {};
    var curr;
    $.each(letters, function(i) {
        curr = {
            letter: this,
            data: []
        };
        $.each(arr, function(k, v) {
            if((!zh[i - 1] || zh[i - 1].localeCompare(v.cityName) <= 0) && v.cityName.localeCompare(zh[i]) == -1) {
                curr.data.push(this);
            }
        });
        if(empty || curr.data.length) {
            py.push(this);
            segs.push(curr);
            curr.data.sort(function(a, b) {

                return a.cityName.localeCompare(b.cityName);
            });
        }
    });
    res["segs"] = segs;
    res["py"] = py;
    return res;
}
/**
 * 调用排序
 */
function pinyin() {
    var arr2 = [
                    {"id" : "v1", "cityName" : "北京"},
                    {"id" : "v2", "cityName" : "上海"},
                    {"id" : "v5", "cityName" : "天津"},
                    {"id" : "v7", "cityName" : "安徽"},
                    {"id" : "v3", "cityName" : "呼和浩特"},
                    {"id" : "v4", "cityName" : "包头"},
                    {"id" : "v9", "cityName" : "海南"},
                    {"id" : "v8", "cityName" : "张家口"}
                ];
    var str = pySegSort(arr2);
    JSON.stringify(str);
}

排序后内容如下:
{“segs”:[{“letter”:”A”,”data”:[{“id”:”v7”,”cityName”:”安徽”}]},{“letter”:”B”,”data”:[{“id”:”v4”,”cityName”:”包头”},{“id”:”v1”,”cityName”:”北京”}]},{“letter”:”H”,”data”:[{“id”:”v9”,”cityName”:”海南”},{“id”:”v3”,”cityName”:”呼和浩特”}]},{“letter”:”S”,”data”:[{“id”:”v2”,”cityName”:”上海”}]},{“letter”:”T”,”data”:[{“id”:”v5”,”cityName”:”天津”}]}],”py”:[“A”,”B”,”H”,”S”,”T”]}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值