数组对象如何根据对象中某个字段分组

场景:做报表图形展示时,接口返回的数据通常为一组数据对象,需要根据code进行分组,将数据分类成几组,用图形描绘出来

措施:代码如下

返回数组对象包括name和data两个字段,data中包括原数组对象中所有字段。

function  groupByType(arr,param) {
            var map = {},
                dest = [];
            for(var i = 0; i < arr.length; i++){
                var ai = arr[i];
                if(ai[param] && !map[ai[param]]){
                    dest.push({
                        name: ai[param],
                        data: [ai]
                    });
                    map[ai[param]] = ai;
                }else{
                    for(var j = 0; j < dest.length; j++){
                        var dj = dest[j];
                        if(dj.name == ai[param]){
                            dj.data.push(ai);
                            break;
                        }
                    }
                }
            }
            return dest;
        }

原文地址:https://www.cnblogs.com/juicy-initial/p/11565470.html

时间: 2024-07-31 02:16:08

数组对象如何根据对象中某个字段分组的相关文章

DDD实战12 值对象不创建表,而是直接作为实体中的字段

这里的值对象如下风格: namespace Order.Domain.PocoModels { //订单地址 //虽然是值对象 但是不继承ValueObject //因为继承ValueObject会有Id属性 我们不为它创建独立建表不要Id public partial class OrderAdress { public string Province { get; set; } public string City { get; set; } public string Zero { get

使用jni直接访问java对象中的字段

Java类:UserInfo public class UserInfo { static { System.loadLibrary("userinfo"); } // 从JNI中直接访问字段 public String mUserName; public int mUserAge; public long mMoney; public UserInfo() { } public int getUserAge() { return mUserAge; } public native v

YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因

YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因在YII框架的使用过程中,我们可以使用foreach直接遍历findAll等方法返回的对象的属性为什么呢?其实这与CModel实现的接口相关,接下来我们看下其实现的整个过程对于一个我们定义的model,它会继承虚类CActiveRecord,CActiveRecord类继承于CModel,如下所示: class special extends CActiveRecord { } abstract class CAct

子类用一个名为subitems的数组属性保存父类对象,为什么不能获取父类对象的信息呢???在main函数中subitems为空,不知道为什么。

main.m如下 1 #import <Foundation/Foundation.h> 2 #import "BNRContainer.h" 3 int main(int argc, const char * argv[]) { 4 @autoreleasepool { 5 6 //创建一个NSMutableArray对象,并用items变量保存该对象的地址 7 BNRContainer *items = [[BNRContainer alloc] init]; 8 fo

js对象数组(JSON) 根据某个共同字段 分组

希望的是将下面的对象数组: [ {"id":"1001","name":"值1","value":"111"}, {"id":"1001","name":"值1","value":"11111"}, {"id":"1002",&q

js对象数组操作之一:对象数组中对象去重的方法总结

在日常开发业务中,经常会有一个数组由多个对象构成,需要对这种数据结构进行操作,如下: const arr = [ { name:'tom', age:15 }, { name:'jack', age:18 }, { name:'tom', age:10 }, ...] 今天总结了一下 先说这种数据结构的去重方法,对于数组中的多个对象去除重复,需要设置布尔值来进行. 一.jquery方法 var oldArr = [ { name:'tom', age:15 }, { name:'jack', a

JavaScript 删除某个数组中指定的对象和删除对象属性

Javascript: 删除指定对象:使用过程中只适合删除对象,如果数组中添加的是类型Function的话是删除不了的. function removeObjWithArr(_arr,_obj) { var length = _arr.length; for(var i = 0; i < length; i++) { if(isObjectValueEqual(_arr[i],_obj)) { if(i == 0) { _arr.shift(); //删除并返回数组的第一个元素 return;

因在缓存对象中增加字段,而导致Redis中取出缓存转化成Java对象时出现反序列化失败的问题

背景描述 因为业务需求的需要,我们需要在原来项目中的一个DTO类中新增两个字段(我们项目使用的是dubbo架构,这个DTO在A项目/服务的domain包中,会被其他的项目如B.C.D引用到).但是这个DTO对象已经在Redis缓存中存在了,如果我们直接向类中增加字段而不做任何处理的话,那么查询操作查出来的缓存对象就会报反序列化失败的错误,从而影响正常的业务流程,那么来看一下我的解决方案吧. 升级缓存版本号 我们的正式环境和预发布环境是共用Redis和Mysql.如果修改了DTO且没有加@Json

数组之---数组是第一级对象!

数组是对象: 无论使用哪种类型的数组,数组标示符其实只是一个引用,指向在堆中创建的一个真实对象,这个数组对象用以保存指向其他对象的引用. 可以作为数组初始化语法的一部分隐式的创建此对象,或者用new表达式显示的创建. 只读成员length是数组对象的一部分(事实上这是唯一一个可以访问的字段或方法),表示此数组对象可以存储多少元素."[]"语法是访问数组对象的唯一方式. 初始化数组的各种方式 & 对象数组和基本类型数组的使用: 下例总结了初始化数组的各种方式,也说明,对象数组和基