把json对象数组属性相同的进行分组,然后取值

来源:互联网 发布:qt socket多线程编程 编辑:程序博客网 时间:2024/06/05 15:31
var changes = $dg.datagrid('getRows');                     var effectRow1 =[];                     var map = {};



//第一个for作用,遍历所有json对象,并存储到数组中
                     for(i=0;i<changes.length;i++){                        effectRow1["all"]=effectRow1.push(changes[i]);//                         var a=effectRow1[i].activitiId;//                         var key = effectRow1[i]['posRow'];//                         map[key] = map[key] || (map[key] = []);//                     var map=map[key].push(effectRow1[i]);                     } 



// 第二个for作用,
                   
  for(i=0;i<effectRow1.length;i++){                           //                           //把相同值的属性取出来放进key中                               var key =effectRow1[i].posRow;//                             alert(effectRow1[i]);//                            //                             map[key] = map[key] || (map[key] = []);                      //把json对象进行分组处理,属性值相同的则放进一起,此时map[key]是数组                         map[key].push(effectRow1[i]);                                                  } 

//第三个for作用,遍历map,取出分组后的同名字的所有数据
                    
 for(var name in map){                          //                          var sum=parseInt(map[name].posCol)+parseInt(map[name].lengths);                         var sum=0;//                          此时map[name]是数组类型                         for(var i = 0;i < map[name].length; i++) {                             var sum= parseInt(map[name][i].posCol)+parseInt(map[name][i].lengths)+sum;                             }                         if(sum>12){                             top.$.messager.alert(name+"信息", "很抱歉,不能超过12,请检查。", 2000);                             break;                         }else{//   进行相应的动作                         console.log(name+':'+sum);                                                                   }                                          } 

1 0