如何使用alert()查看JavaScript中的数组结构?


108

如何使用JavaScript查看数组的结构alert()


14
这不能回答您的问题,但是您应该安装FireBug并使用console.log它-这对于自省JavaScript对象非常有用。
Deniz Dogan 2010年

你对数组结构是什么意思?您可以遍历数组并提醒每个值。
Tim Schmelter 2010年

@ console.log的Deniz Dogan是指shift + R和选项“控制台”吗?
pppttt 2010年

1
@Deniz- console.debug实际上会更好。
Matt Ball 2010年

@Tim按结构表示,我的意思是索引和值,像PHP printf一样,数组的“原始”视图
pppttt 2010年

Answers:


122

一个非常基本的方法是alert(arrayObj.join('\n')),它将在一行中显示每个数组元素。


5
这很好。将“ arrayObj”替换为您的数组名称。因此,如果您的数组名为myArray,则这是您的代码行:alert(myArray.join('\n'));
Tony Brasunas 2014年

54

编辑: Firefox和Google Chrome现在有一个内置JSON对象,因此您可以说alert(JSON.stringify(myArray))不需要使用jQuery插件。这不是Java语言规范的一部分,因此您不应该依赖JSON所有浏览器中都存在的对象,但是出于调试目的,它非常有用。

我倾向于使用jQuery-json插件,如下所示:

alert( $.toJSON(myArray) );

这将以如下格式打印数组

[5, 6, 7, 11]

但是,为调试Javascript代码,我强烈建议Firebug 它实际上是Javascript控制台附带的,因此您可以在任何页面上键入Javascript代码并查看结果。像数组之类的东西已经以上面使用的可读格式打印。

Firebug还具有调试器以及用于帮助您查看和调试HTML和CSS的屏幕。


32

将您的js数组传递给下面的函数,它将与php print_r()函数相同

 alert(print_r(your array));  //call it like this

function print_r(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 += print_r(value,level+1);
        } else {
            dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
        }
    }
} else { //Stings/Chars/Numbers etc.
    dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}

此功能使Firefox在解析UI可排序数组时崩溃。
Shahrokhian


8

我建议使用toString()。

例如 alert(array.toString()), 要么console.log(array.toString())


3

如果这是出于调试目的,我建议您使用JavaScript调试器,例如Firebug。它可以让您查看数组的全部内容以及更多内容,包括修改数组条目和单步执行代码。


2

如果您要使用alert()显示对象数组的内容,我建议您在对象中定义toString()方法,从而使用简单的alert(MyArray); 阵列的全部内容将显示在警报中。

这是一个例子:

//-------------------------------------------------------------------
// Defininf the Point object
function Point(CoordenadaX, CoordenadaY) {
    // Sets the point coordinates depending on the parameters defined
    switch (arguments.length) {
        case 0:
            this.x = null;
            this.y = null;
            break;
        case 1:
            this.x = CoordenadaX;
            this.y = null;
            break;
        case 2:
            this.x = CoordenadaX;
            this.y = CoordenadaY;
            break;
    }
    // This adds the toString Method to the point object so the 
    // point can be printed using alert();
    this.toString = function() {
        return " (" + this.x + "," + this.y + ") ";
    };
 }

然后,如果您有一个点数组:

var MyArray = [];
MyArray.push ( new Point(5,6) );
MyArray.push ( new Point(7,9) );

您可以打印简单地调用:

alert(MyArray);

希望这可以帮助!



1

最好使用Firebug(Chrome控制台等)并使用console.dir()


1

出于可读性目的,您可以使用:

alert(JSON.stringify(someArrayOrObj, '', 2));

有关JSON.stringify()的更多信息。

例:

let user = {
  name: "John",
  age: 30,
  roles: {
    isAdmin: false,
    isEditor: true
  }
};

alert(JSON.stringify(user, "", 2));
/* Result:
{
  "name": "John",
  "age": 30,
  "roles": {
    "isAdmin": false,
    "isEditor": true
  }
} 
*/

-5
alert($("#form_id").serialize());

3
标记了问题的问题javascript说:“除非还包括框架/库的标签,否则期望纯JavaScript答案”。即使情况并非如此……问题还是在问数组,而不是HTML表单。
昆汀
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.