• 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[""]; }
  • 相关阅读:
    Poj 2391 二分答案+最大流+拆点
    POJ 1087 A Plug for UNIX 最大流
    POJ 1459 Power Network 最大流
    POJ 2112 Optimal Milking 二分答案+最大流
    POJ 1273 Drainage Ditches 最大流
    POJ 1149 PIGS 最大流
    POJ 2288 Islands and Bridges 哈密尔顿路 状态压缩DP
    The Cow Lexicon
    1523. K-inversions
    1350. Canteen
  • 原文地址:https://www.cnblogs.com/mengff/p/7097011.html
Copyright © 2020-2023  润新知