zoukankan      html  css  js  c++  java
  • 纵表整理数据集合处理

    关于纵表,小小的说明一下:

    就是后台对于无法确定属性名有多少,采用KEY,VALUE来代表属性名,最后添加的时候,可以随意添加数量和种类
    比如:

    var list = {
    			    "code":"200",
    			    "data":[
    			        {
    			            "type":"XZ",
    			            "id":856,
    			            "profileKey":"name",
    			            "profileValue":"肖战",
    			        },
    			        {
    			            "type":"XZ",
    			            "id":854,
    			            "profileKey":"age",
    			            "profileValue":"18",
    			        },
    			        {
    			        	"type":'PYY',
    			            "id":853,
    			            "profileKey":"name",
    			            "profileValue":"彭于晏",
    			        },{
    			        	"type":"PYY",
    			            "id":852,
    			            "profileKey":"age",
    			            "profileValue":"20",
    			        }
    			    ],
    			    "msg":"成功"
    			}
    

    我想整理出来,每个人的特性都是唯一的,并且每个特性都是以KEY=VALUE的形式来,前端比较好直接取用;

    function getCollection(callback) {
    		let data = list.data;
    		let allArr = [];
    		let allObj = {};
    		let initObj = {
    			type: data[0].type,
    			[data[0].profileKey]: data[0].profileValue
    		}
    
    		for(var i = 1; i < data.length; i ++){
    			let currItem = data[i-1], nextItem = data[i];
    			if (currItem.type === nextItem.type) {
    				allObj[currItem.type] = Object.assign(initObj, {
    					[nextItem.profileKey]: nextItem.profileValue
    				})
    			}else {
    				initObj = {
    					type: nextItem.type,
    					[nextItem.profileKey]: nextItem.profileValue
    				}
    				continue;
    			}
    			
    		}
    		//获取list---数组形式
    	    for (var key in allObj) {
    	      allArr.push(allObj[key]);
    	    }
    
    	    callback(allObj,allArr);
    }
    
    
    //调用方法
    	    getCollection((resObj, resList) =>{
            //使用数据
    	    	console.log(resObj);
    	    	console.log(resList)
    	    })
    
    // 对象形式 --resObj                      
     {
       PXY:{
        age: "20"
        name: "彭于晏"
        type: "PXY"
      },
      XZ:{
          age: "18"
          name: "肖战"
          type: "XZ"
        }
     } 
    
    //数组形式 --- resList
    [
      {
        age: "20"
        name: "彭于晏"
        type: "PXY"
      },{
          age: "18"
          name: "肖战"
          type: "XZ"
        }
    ]
  • 相关阅读:
    【Todo】Java线程面试题 Top 50 (转载)
    【Todo】秒杀系统 & 乐观锁 & Nginx反向代理
    【Todo】C++和Java里面的浮点数及各种数字表示
    asp.net操作word的表格
    Android消息推送(二)--基于MQTT协议实现的推送功能
    单点更新线段树 RMQ
    英语月结
    AppWidget应用(二)---PendingIntent 之 getActivity
    2 WAN 和1 Evo/3g Routeros PCC 方法负载平衡
    Android 网络权限配置
  • 原文地址:https://www.cnblogs.com/lulianlian/p/11763448.html
Copyright © 2011-2022 走看看