• js 按照字母进行分组


    前言

    js 按照字母进行分组的一个实例。

    正文

    var list = [
        {
            'name' : '张三',
            'py' : 'zhnagsan'
        },
        {
            'name' : '李四',
            'py' : 'lisi'
        },
        {
            'name' : '王五',
            'py' : 'wangwu'
        },
        {
            'name' : '赵六',
            'py' : 'zhaoliu'
        },
    ];
    
    var resault = data_letter_sort(list, 'py');
    
    console.log(resault);
    
    /**
     * 数据 按照 拼音首字母 排序 并分组
     * 
     * @param {Json} data ; 需要 排序的 数据
     * @param {String} field ;必须;排序所依据的 字段 名
     * 
     * @return {Json} ; 例如:{A:[{},{}],B:[{},{}],C:[{}],#:[]}
     */
    function data_letter_sort (data, field) {
        var letter_reg = /^[A-Z]$/;
        var list = new Array();
        for (var i = 0; i < data.length; i++) {
            // 添加 # 分组,用来 存放 首字母不能 转为 大写英文的 数据
            list['#'] = new Array();
            // 首字母 转 大写英文
            letter = (data[i][field]).substr(0, 1).toUpperCase();
            // 是否 大写 英文 字母
            if (!letter_reg.test(letter)) {
                letter = '#';
            }
            // 创建 字母 分组
            if (!(letter in list)) {
                list[letter] = new Array();
            }
            // 字母 分组 添加 数据
            list[letter].push(data[i]);
        }
        // 转换 格式 进行 排序;
        var resault = new Array();
        for (var key in list) {
            resault.push({
                letter: key,
                list: list[key]
            });
        }
        resault.sort(function (x, y) {
            return x.letter.charCodeAt(0) - y.letter.charCodeAt(0);
        });
        // # 号分组 放最后
        var last_arr = resault[0];
        resault.splice(0, 1);
        resault.push(last_arr);
    
        // 转换 数据 格式
        var json_sort = {}
        for (var i = 0; i < resault.length; i++) {
            json_sort[resault[i].letter] = resault[i].list;
        }
    
        return json_sort;
    }
    

    后续

    这个js 按照字母进行分组的局限性在于只能分英文的,中文的是用编码来进行划分,后续补齐。

  • 相关阅读:
    欧几里德算法
    int 和 string 相互转换(简洁版)
    骆驼吃香蕉
    链表反转 (Multi-method)
    二分查找 (最经典代码,及其边界条件的实践分析)
    mottoes
    欧拉函数,欧拉定理,费马小定理。
    深搜和广搜的对比
    Python基础
    马拉车求最大回文字串
  • 原文地址:https://www.cnblogs.com/aoximin/p/13201031.html
Copyright © 2020-2023  润新知