js deep copy 解析json
2016-03-01 16:46
591 查看
var deepCopyArray = function(arr){
var result=[];
for(var i=0;i<arr.length;i++){
result.push(deepCopyObj(arr[i]));
}
return result;
};
var deepCopyObj = function(obj) {
var result={};
for (var key in obj) {
result[key] = obj[key];
}
return result;
};
解析json
var calcValue = function(item, index){
var result;
if($.isArray(item)){ //是数组
result = [];
for(var i = 0;i < item.length;i++){
if(typeof(item[i]) != "function"){
if($.isArray(item[i])){
if(i >= 5) break;
var obj = {
items : calcValue(item[i],i),
title : '[' + i + ']'
}
result.push(obj);
}
else{
result.push(calcValue(item[i],i));
}
}
}
if(item.length > i && $.isArray(item[i])){
result.push({title:'更多数据请查看数据表',data:''});
}
}
else if(typeof(item) == 'object'){ //是对象
result = [];
for (var i in item) {
if($.isArray(item[i])){
result.push({title:i,items:calcValue(item[i])});
}
else if(typeof(item[i]) == 'object')
result.push({title:i,items:calcValue(item[i])});
else
result.push({title:i,data:item[i]});
}
if(index){
if(result.length == 1)
return {title:'[' + index + ']',data:result[0]};
else
return {title:'[' + index + ']',items:result};
}
return result.length == 1? result[0] : result;
}
else { //是值
result = {title:'[' + index + ']',data:item};
}
return result;
}
var result=[];
for(var i=0;i<arr.length;i++){
result.push(deepCopyObj(arr[i]));
}
return result;
};
var deepCopyObj = function(obj) {
var result={};
for (var key in obj) {
result[key] = obj[key];
}
return result;
};
解析json
var calcValue = function(item, index){
var result;
if($.isArray(item)){ //是数组
result = [];
for(var i = 0;i < item.length;i++){
if(typeof(item[i]) != "function"){
if($.isArray(item[i])){
if(i >= 5) break;
var obj = {
items : calcValue(item[i],i),
title : '[' + i + ']'
}
result.push(obj);
}
else{
result.push(calcValue(item[i],i));
}
}
}
if(item.length > i && $.isArray(item[i])){
result.push({title:'更多数据请查看数据表',data:''});
}
}
else if(typeof(item) == 'object'){ //是对象
result = [];
for (var i in item) {
if($.isArray(item[i])){
result.push({title:i,items:calcValue(item[i])});
}
else if(typeof(item[i]) == 'object')
result.push({title:i,items:calcValue(item[i])});
else
result.push({title:i,data:item[i]});
}
if(index){
if(result.length == 1)
return {title:'[' + index + ']',data:result[0]};
else
return {title:'[' + index + ']',items:result};
}
return result.length == 1? result[0] : result;
}
else { //是值
result = {title:'[' + index + ']',data:item};
}
return result;
}
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享
- 如何创建对象以及jQuery中创建对象的方式
- 数组方法汇总