Есть ли эквивалент для var_dump (PHP) в Javascript? - PullRequest
252 голосов
/ 27 ноября 2008

Нам нужно посмотреть, какие методы / поля у объекта есть в Javascript.

Ответы [ 17 ]

4 голосов
/ 13 февраля 2013

Немного улучшена функция nickf для тех, кто не знает, какой тип переменной входит

function dump(v) {
    switch (typeof v) {
        case "object":
            for (var i in v) {
                console.log(i+":"+v[i]);
            }
            break;
        default: //number, string, boolean, null, undefined 
            console.log(typeof v+":"+v);
            break;
    }
}
3 голосов
/ 19 октября 2014

Если вы ищете PHP-функцию, конвертированную в JS, есть небольшой сайт: http://phpjs.org. Там вы можете получить большинство функций PHP, надежно написанных на JS. для var_dump попробуйте: http://phpjs.org/functions/var_dump/ (обязательно проверьте верхний комментарий, это зависит от "echo", который также можно скачать с того же сайта)

2 голосов
/ 04 августа 2015

На основании предыдущих функций, найденных в этом посте. Добавлен рекурсивный режим и отступ.

function dump(v, s) {
  s = s || 1;
  var t = '';
  switch (typeof v) {
    case "object":
      t += "\n";
      for (var i in v) {
        t += Array(s).join(" ")+i+": ";
        t += dump(v[i], s+3);
      }
      break;
    default: //number, string, boolean, null, undefined 
      t += v+" ("+typeof v+")\n";
      break;
  }
  return t;
}

Пример

<code>var a = {
  b: 1,
  c: {
    d:1,
    e:2,
    d:3,
    c: {
      d:1,
      e:2,
      d:3
    }
  }
};

var d = dump(a);
console.log(d);
document.getElementById("#dump").innerHTML = "<pre>" + d + "
";

Результат

b: 1 (number)
c: 
   d: 3 (number)
   e: 2 (number)
   c: 
      d: 3 (number)
      e: 2 (number)
2 голосов
/ 03 февраля 2015

Я использовал первый ответ, но мне не хватало рекурсии в нем.

Результат был таким:

function dump(obj) {
    var out = '';
    for (var i in obj) {
        if(typeof obj[i] === 'object'){
            dump(obj[i]);
        }else{
            out += i + ": " + obj[i] + "\n";
        }
    }

    var pre = document.createElement('pre');
    pre.innerHTML = out;
    document.body.appendChild(pre);
}
0 голосов
/ 05 марта 2019

Вы можете просто использовать пакет NPM var_dump

npm install var_dump --save-dev

Использование:

const var_dump = require('var_dump')

var variable = {
  'data': {
    'users': {
      'id': 12,
      'friends': [{
        'id': 1,
        'name': 'John Doe'
      }]
    }
  }
}

// print the variable using var_dump
var_dump(variable)

Будет напечатано:

object(1) {
    ["data"] => object(1) {
        ["users"] => object(2) {
            ["id"] => number(12)
            ["friends"] => array(1) {
                [0] => object(2) {
                    ["id"] => number(1)
                    ["name"] => string(8) "John Doe"
                }
            }
        }
    }
}

Ссылка: https://www.npmjs.com/package/@smartankur4u/vardump

Спасибо, позже!

0 голосов
/ 26 июля 2018

Позднее с игрой, но вот действительно удобная функция, которая очень проста в использовании, позволяет передавать столько аргументов, сколько вам нужно, любого типа и отображать содержимое объекта в окне консоли браузера, как будто вы называется console.log из JavaScript - но из PHP

Обратите внимание, что вы также можете использовать теги, передав «TAG-YourTag», и он будет применяться до тех пор, пока не будет прочитан другой тег, например, «TAG-YourNextTag»

/*
*   Brief:          Print to console.log() from PHP
*   Description:    Print as many strings,arrays, objects, and other data types to console.log from PHP.
*                   To use, just call consoleLog($data1, $data2, ... $dataN) and each dataI will be sent to console.log - note that
*                   you can pass as many data as you want an this will still work.
*
*                   This is very powerful as it shows the entire contents of objects and arrays that can be read inside of the browser console log.
*                   
*                   A tag can be set by passing a string that has the prefix TAG- as one of the arguments. Everytime a string with the TAG- prefix is
*                   detected, the tag is updated. This allows you to pass a tag that is applied to all data until it reaches another tag, which can then
*                   be applied to all data after it.
*
*                   Example:
*                   consoleLog('TAG-FirstTag',$data,$data2,'TAG-SecTag,$data3); 
*                   Result:
*                       FirstTag '...data...'
*                       FirstTag '...data2...'
*                       SecTag   '...data3...' 
*/
function consoleLog(){
    if(func_num_args() == 0){
        return;
    }

    $tag = '';
    for ($i = 0; $i < func_num_args(); $i++) {
        $arg = func_get_arg($i);
        if(!empty($arg)){       
            if(is_string($arg)&& strtolower(substr($arg,0,4)) === 'tag-'){
                $tag = substr($arg,4);
            }else{      
                $arg = json_encode($arg, JSON_HEX_TAG | JSON_HEX_AMP );
                echo "<script>console.log('".$tag." ".$arg."');</script>";
            }       
        }
    }
}

ПРИМЕЧАНИЕ: func_num_args () и func_num_args () являются функциями php для чтения динамического числа входных аргументов и позволяют этой функции иметь бесконечно много запросов console.log от одного вызов функции

0 голосов
/ 09 января 2017

Ниже мой любимый var_dump / print_r эквивалент в Javascript для PHP var_dump.

 function dump(arr,level) {
  var dumped_text = "";
  if(!level) level = 0;

  //The padding given at the beginning of the line.
  var level_padding = "";
  for(var j=0;j<level+1;j++) level_padding += "    ";

  if(typeof(arr) == 'object') { //Array/Hashes/Objects 
   for(var item in arr) {
    var value = arr[item];

    if(typeof(value) == 'object') { //If it is an array,
     dumped_text += level_padding + "'" + item + "' ...\n";
     dumped_text += dump(value,level+1);
    } else {
     dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
    }
   }
  } else { //Stings/Chars/Numbers etc.
   dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
  }
  return dumped_text;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...