js 数据对象转化
Posted zhanglw456
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 数据对象转化相关的知识,希望对你有一定的参考价值。
/* * { key1:[v11,v12],key2:[v21,v22]} 或 [[v11,v12],[v21,v22]] 转化成=》 [{key1:v11,key2:v21},{key1:v12,key2:v22},] * */ function objTransform1(obj){ var desArr = []; if(JSON.stringify(obj) == "{}"){ return desArr; } var keysArr = Object.keys(obj); if(!(obj[keysArr[0]] instanceof Array)){ // 如果是{key1:v1,key2:v2}模式 desArr.push(obj); return desArr; } Object.keys(obj).forEach(function(key){ var len =obj[key].length; for(var i=0; i<len; i++){ if(!desArr[i]){ desArr.push({}); } (desArr[i])[key] = (obj[key])[i]; } }); return desArr; }
/* * [{key1:v11,key2:v12},{key1:v21,key2:v22}] 转化成=》 [[v11,v21],[v12,v22]] * */ function transform2(objArr){ var desArr= []; objArr.forEach(function(item,i){ Object.keys(item).forEach(function(key,j){ if(i==0){ desArr.push([]); } desArr[j].push(item[key]); }); }); return desArr; }
// 简单对象扩展属性,obj是对象,attr是要添加的属性对象{key1:v1,key2:v2},innerExtend是否是内部的属性对象扩展 function extendAttr(obj,attr,innerExtend){ if(JSON.stringify(obj) == "{}" ){ //判断是否是空对象,这里空对象不扩展 return false; } if(innerExtend){ //obj= {key1:{...},key2:{...}} Object.keys(obj).forEach(function(key0){ Object.keys(attr).forEach(function(key){ (obj[key0])[key] = attr[key]; }); }); }else{ Object.keys(attr).forEach(function(key){ obj[key] = attr[key]; }); } }
以上是关于js 数据对象转化的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段12——JavaScript的Promise对象