zoukankan      html  css  js  c++  java
  • 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 按照字母进行分组的局限性在于只能分英文的,中文的是用编码来进行划分,后续补齐。

  • 相关阅读:
    Apple http live streaming 不支持windows?
    CDN设计:[笔记]Analysis of Enterprise Media Server Workloads
    牛项目 Harvest
    一些校园招聘的题目和分析
    关于pdf转doc (word) 的工具 Solid Converter PDF
    A CAP Solution (Proving Brewer Wrong)
    6"电纸书/电子书 PaperCrop pdf重排使用心得
    CDN设计 层级化的cache_A
    Berkeley DB Hash、Btree、Queue、Recno 选择
    PowerDesigner 学习系列 简单操作
  • 原文地址:https://www.cnblogs.com/aoximin/p/13201031.html
Copyright © 2011-2022 走看看