zoukankan      html  css  js  c++  java
  • 用JavaScript写一个类似PHP print_r的函数

    PHP print_r的函数很好用,可以用来打印数组、对象等的结构与数据,可惜JavaScript并没有原生提供类似的函数。不过我们可以试着自己来实现这个函数,下面提供一些方法与思路。

    方法一

    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;
    }
    

    方法二

    $(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 + "
    ";
    			  break;
    			case 'object':
    			default:
    			  for(var key in o) {
    				tmp += indentNextTwo + '[' + key + '] = ';
    				tmp += print_r(o[key], (depth+1));
    			  }
    		  }
    		  result += type + "
    ";
    		  result += indentNext + '(' + "
    ";
    		  result += tmp;
    		  result += indentNext + ')' + "
    ";
    		  return result;
    		};
    		alert(print_r(json));
    	  }(json));
    	});
    });
    

    方法三

    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);
    }
    
  • 相关阅读:
    Linux下DNS服务器搭建详解
    Oracle 数据泵使用详解--精华版
    Oracle 数据泵详解
    数据泵
    Oracle11g数据库导入Oracle10g数据库操作笔记
    DNS服务器
    spring mvc发送请求404,不能进入处理方法,也不报错
    CentOS设置默认启动命令行(不启动图形界面)
    SQL Server 排序的时候使 null 值排在最后
    Git教程
  • 原文地址:https://www.cnblogs.com/xiaoyang002/p/4039419.html
Copyright © 2011-2022 走看看