zoukankan      html  css  js  c++  java
  • Javascript实现类似PHP的print_r函数

    在网上搜了一下,有几种实现思路,还算实用。此文记录备用。

    1. muyu的方案

     $(document).ready(function(){
        $('#btn').click(function(){
          var jsonStr = $('#jsonData').val();
          var json = eval('('+jsonStr+')');
          (function(){
            var print_r = function(o, depth) {
              var result = '';
              depth || (depth=1);
              var indent = new Array(4*depth+1).join(' ');
              var indentNext = new Array(4*(depth+1)+1).join(' ');
              var indentNextTwo = new Array(4*(depth+2)+1).join(' ');
              var tmp = '';
              var type = typeof o;
              switch(type) {
                case 'string':
                case 'number':
                case 'boolean':
                case 'undefined':
                case 'function':
                  tmp += indent + indentNext + o + "\n";
                  break;
                case 'object':
                default:
                  for(var key in o) {
                    tmp += indentNextTwo + '[' + key + '] = ';
                    tmp += print_r(o[key], (depth+1));
                  }
              }
              result += type + "\n";
              result += indentNext + '(' + "\n";
              result += tmp;
              result += indentNext + ')' + "\n";
              return result;
            };
            alert(print_r(json));
          }(json));
        });
      });

    2. 36ria的方案

    function print_r(theObj) {
        var retStr = '';
        if (typeof theObj == 'object') {
            retStr += '<div style="font-family:Tahoma; font-size:7pt;">';
            for (var p in theObj) {
                if (typeof theObj[p] == 'object') {
                    retStr += '<div><b>['+p+'] => ' + typeof(theObj) + '</b></div>';
                    retStr += '<div style="padding-left:25px;">' + print_r(theObj[p]) + '</div>';
                } else {
                    retStr += '<div>['+p+'] => <b>' + theObj[p] + '</b></div>';
                }
            }
            retStr += '</div>';
        }
        return retStr;
    }

    3. 其他方法

            print_r:function(theObj) {
                var retStr = '';
                if (typeof theObj == 'object'||typeof theObj == 'array') {
                    retStr += '<div style="font-family:Tahoma; font-size:7pt;">';
                    for (var p in theObj) {
                        if (typeof theObj[p] == 'object' || typeof theObj[p] == 'array') {
                            retStr += '<div><b>['+p+'] => ' + typeof(theObj) + '</b></div>';
                            retStr += '<div style="padding-left:25px;">' + XFUPLOAD.Tools.print_r(theObj[p]) + '</div>';
                        } else {
                            retStr += '<div>['+p+'] => <b>' + theObj[p] + '</b></div>';
                        }
                    }
                    retStr += '</div>';
                }
                $("body").append(retStr);
            }

    使用时需要根据场景略作修改。

  • 相关阅读:
    Redis其他命令
    Redis 键(key)
    Redis数据类型命令
    配置命令 CONFIG
    Redis简介
    idea破解
    jenkins+allure+testng
    Jenkins
    docker镜像
    docker命令
  • 原文地址:https://www.cnblogs.com/jiji262/p/2554630.html
Copyright © 2011-2022 走看看