js 分组数组
思路:
1、先将数组按照一定规则排序;
2、再拆分数组到Map中,按Key分类;
3、再从Map中遍历取出要显示的内容;
sortBroadList: function (broadcastList) {
            var broadList = broadcastList.sort(function (d1, d2) {
                var d1ChatAt = (d1.first_pinyin ? d1.first_pinyin.toString().charCodeAt(0) : 91);
                var d2ChatAt = (d2.first_pinyin ? d2.first_pinyin.toString().charCodeAt(0) : 91);
                return d2ChatAt - d1ChatAt;
            }).reverse();
            var result = new Map();
            for (var item of broadList) {
                var pinyin = item.first_pinyin ? item.first_pinyin : '#';
                if (result.get(pinyin)) {
                    result.get(pinyin).values.push(item);
                } else {
                    result.set(pinyin, {key: pinyin, values: [item]});
                }
            }
            uc.util.LogUtil.info('ContactManager', 'sortBroadList', 'sort broadcastlist result:', {
                broadList: broadList
            });
            return result;
        },
        loadBroadcastItem: function (broadcastList) {
            var parentPanel = _this.getLatestClickedContactsPanel();
            var ul = parentPanel.find('.broadcast-parent');
            ul.empty();
            var broadList = _this.sortBroadList(broadcastList);
            broadList.forEach(function (item) {
                var hasAlphabetical = ul.find(`li[alphabetical-key="${item.key}"]`);
                if (!hasAlphabetical.length) {
                    ul.append(_this.getAlphabetical(item.key));
                }
                for (var broadcast of item.values) {
                    ul.append(_this.getBroadcastTpl(broadcast));
                    _this.broadcastCache.addContact(broadcast.board_id, broadcast);
                }
            });
        },
结果:

js 分组数组的更多相关文章
- Js删除数组重复元素的多种方法
		js对数组元素去重有很多种处理的方法,本篇文章中为网络资源整理,当然每个方法我都去实现了:写下来的目的是希望自己活学活用,下次遇到问题后方便解决. 第一种 function oSort(arr){ v ... 
- js去除数组重复项
		/** * js去除数组重复项 */ //方法一.使用正则法 // reg.test(str),匹配得到就返回true,匹配不到返回false var arr = ["345",& ... 
- js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法
		var questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ... 
- 探讨js字符串数组拼接的性能问题
		这篇文章主要介绍了有关js对字符串数组进行拼接的性能问题,字符串连接一直是js中性能最低的操作之一,应该如何解决呢?请参看本文的介绍 我们知道,在js中,字符串连接是性能最低的操作之一. 例如: 复制 ... 
- js之数组,对象,类数组对象
		许久不写了,实在是不知道写点什么,正好最近有个同事问了个问题,关于数组,对象和类数组的,仔细说起来都是基础,其实都没什么好讲的,不过看到还是有很多朋友有些迷糊,这里就简单对于定义以及一下相同点,不同点 ... 
- js对数组的操作函数
		js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手, ... 
- JS 索引数组、关联数组和静态数组、动态数组
		JS 索引数组.关联数组和静态数组.动态数组 数组分类: 1.从数组的下标分为索引数组.关联数组 var ary1 = [1,3,5,8]; //按索引去取数组元素,从0开始(当然某些语言实现从1开始 ... 
- JS 中数组的排序和去重
		在 PHP 中,数组有很多排序方法,不过其他语言的数组中大概是不会像 JS 的数组一样,包罗万象,啥都通吃的.所以 JS 的数组排序情况就略多一些了. 简单粗暴的排序: 赤果果的sort: var ... 
- JS去除数组中重复值的四种方法
		JS去除数组中重复值的四种方法 1 /// <summary> o[this[i]] = ""; } } newArr.p ... 
随机推荐
- 【Hadoop】HDFS笔记(一):Hadoop的RPC机制
			RPC(Remote Procedure Call, 远程过程调用)主要面对两个问题: 1.对象调用方式: 2.序列/反序列化机制. Hadoop实现的RPC组件依赖于Hadoop Writable类 ... 
- AIRSDK 3.7 加载远程的含有代码的swf文件
			之前就说这个版本会解决可以加载远程的含有代码的swf文件的需求.但是,一直比较好奇这个是否行得通,还以为 Adobe 副总裁去了苹果,内部给了特殊待遇. 因为苹果一直就是不允许远程加载代码的,像js文 ... 
- C#基础:对委托的简单理解
			在编程过程中,我们习惯把数据作为参数传递给方法(例:int a=int.Parse(“20”);).是否能将一个方法传递给另一个方法呢?是不是听起来有点奇怪!!! 线程大家应该熟悉吧,在计算机中并行运 ... 
- npm和package.json那些不为常人所知的小秘密
			此文已由作者黄锴授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 强大的命令功能 如果你没使用过script,那你可算是从来没手动编辑过package.json.script作 ... 
- Maven面试必备
			Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Depen ... 
- C++ STL map使用
			Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map构造函数:map<string , in ... 
- 767. Reorganize String
			Given a string S, check if the letters can be rearranged so that two characters that are adjacent to ... 
- lightoj 1076 【二分找满足条件的最左】
			#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsigned long long ... 
- 【NOI广东省选模拟赛】割
			[问题描述] 给出 n 个数 a1,a2,...,an, 询问有多少个三元组(i, j, k)满足以下两个条件:1. i < j < k: 2. ai*aj*ak 是 p 的倍数. [输入 ... 
- PostgreSQL-12-数据导入与导出
			1.数据导入 - COPY FROM CREATE DATABASE c04_datacleaning; \c c04_datacleaning 创建新的数据库 COPY table_name [ ( ... 
