JavaScript对象的扁平化与反扁平化
2016-06-22 20:40
423 查看
function flatten(obj) { var result = {}; function process(key, value) { if (Object(value) !== value) { if (key) { result[key] = value; } } else if (Array.isArray(value)) { for (var i = 0, len = value.length; i < len; i++) { process(key + "[" + i + "]", value[i]); } if (value.length === 0 && key) { result[key] = []; } } else { var isEmpty = true; for (var prop in value) { isEmpty = false; process((key ? key + "." : key) + prop, value[prop]); } if (isEmpty && key) { result[key] = {}; } } } process("", obj); return result; } function unflatten(obj) { if (Object(obj) !== obj || Array.isArray(obj)) { return obj; } var result = {}; var r = /\.?([^\.\[\]]+)|\[(\d+)\]/g; for (var prop in obj) { var matchs; var cur = result; var p = ""; while(matchs = r.exec(prop)) { cur = cur[p] || (cur[p] = matchs[2] ? []: {}); p = matchs[2] || matchs[1]; } cur[p] = obj[prop]; } return result[""] || result; }
相关文章推荐
- JQ JSON数据类型
- JavaScript函数(一)
- 什么是原生的javascript
- JavaScript跨域总结与解决办法
- JavaScript语法详解(四)
- JavaScript语法详解(三)
- JSON导入jar问题
- django中两张表有外键关系的相互查找方法,自定义json编码方法
- JavaScript语法详解(二)
- 6.1 JSP内置对象总结
- 按照网上方法js删除指定cookie,却怎么也删除不了,解决如下
- Js字符串与十六进制的相互转换 【转】
- JSON.parse和eval的区别
- js 和 native 如何交换数据
- js随着页面滑动的图片
- 精通D3.js学习笔记(2)比例尺和坐标
- JavaScript为unicode编码转换为中文
- js的两种查询方式 LHS and RHS
- javascript闭包
- Json转model对象,model转json,解析json字符串