js对象的扁平化与反扁平化

发布时间:2017-7-9 7:22:51编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"js对象的扁平化与反扁平化 ",主要涉及到js对象的扁平化与反扁平化 方面的内容,对于js对象的扁平化与反扁平化 感兴趣的同学可以参考一下。

Object.flatten = function(obj){    var result = {};    function recurse(src, prop) {        var toString = Object.prototype.toString;        if (toString.call(src) == '[object Object]') {            var isEmpty = true;            for (var p in src) {                isEmpty = false;                recurse(src[p], prop ? prop + '.' + p : p)            }            if (isEmpty && prop) {                result[prop] = {};            }        } else if (toString.call(src) == '[object Array]') {            var len = src.length;            if (len > 0) {                src.forEach(function (item, index) {                    recurse(item, prop ? prop + '.[' + index + ']' : index);                })            } else {                result[prop] = [];            }        } else {            result[prop] = src;        }    }    recurse(obj,'');    return result;}
Object.unflatten
= function(data) { if (Object(data) !== data || Array.isArray(data)) return data; var regex = /\.?([^.\[\]]+)|\[(\d+)\]/g, resultholder = {}; for (var p in data) { var cur = resultholder, prop = "", m; while (m = regex.exec(p)) { cur = cur[prop] || (cur[prop] = (m[2] ? [] : {})); prop = m[2] || m[1]; } cur[prop] = data[p]; } return resultholder[""] || resultholder;}
Object.unflatten2
= function(data) { if (Object(data) !== data || Array.isArray(data)) return data; var result = {}, cur, prop, idx, last, temp; for(var p in data) { cur = result, prop = "", last = 0; do { idx = p.indexOf(".", last); temp = p.substring(last, idx !== -1 ? idx : undefined); cur = cur[prop] || (cur[prop] = (!isNaN(parseInt(temp)) ? [] : {})); prop = temp; last = idx + 1; } while(idx >= 0); cur[prop] = data[p]; } return result[""];}


上一篇:asp.net mvc视图中使用entitySet类型数据时提示出错
下一篇:【读书笔记】《Android开发艺术探索》

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款