zoukankan      html  css  js  c++  java
  • 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[""]; }
  • 相关阅读:
    我的黑客偶像
    IEEE754浮点数
    罗马数字转化为阿拉伯数字
    2020-2021-1 20201221 《信息安全专业导论》第三周学习总结
    base64
    2020-2021-1 20201221曾思源《第二周学习总结》
    师生关系
    教材速读问题
    20201221曾思源自我介绍
    20201221 曾思源 第一周学习总结
  • 原文地址:https://www.cnblogs.com/mengff/p/7097011.html
Copyright © 2011-2022 走看看