ฉันจะดูโครงสร้างอาร์เรย์ใน JavaScript ด้วย alert () ได้อย่างไร


108

ฉันจะดูโครงสร้างของอาร์เรย์ใน JavaScript โดยใช้alert()อย่างไร


14
สิ่งนี้ไม่ตอบคำถามของคุณ แต่คุณควรติดตั้ง FireBug และใช้งานconsole.log- เหมาะสำหรับการวิเคราะห์วัตถุ JavaScript
Deniz Dogan

คุณหมายถึงอะไรกับโครงสร้างอาร์เรย์ คุณสามารถวนรอบอาร์เรย์และแจ้งเตือนแต่ละค่าได้
Tim Schmelter

@ Deniz Dogan โดย console.log คุณหมายถึง shift + R และ option "console" หรือเปล่า?
pppttt

1
@ เดนิซ - console.debugจะทำงานได้ดีขึ้นจริง
Matt Ball

@Tim ตามโครงสร้างฉันหมายถึงดัชนีและค่ามุมมอง "ดิบ" ของอาร์เรย์เช่นใน PHP printf
pppttt

คำตอบ:


122

แนวทางพื้นฐานคือalert(arrayObj.join('\n'))ซึ่งจะแสดงองค์ประกอบอาร์เรย์แต่ละรายการในแถว


5
ใช้งานได้ดี แทนที่ "arrayObj" ด้วยชื่ออาร์เรย์ของคุณ ดังนั้นหากอาร์เรย์ของคุณมีชื่อว่า myArray นี่คือรหัสของคุณ:alert(myArray.join('\n'));
Tony Brasunas

54

แก้ไข: Firefox และ Google Chrome มีJSONออบเจ็กต์ในตัวแล้วดังนั้นคุณสามารถพูดได้alert(JSON.stringify(myArray))โดยไม่ต้องใช้ปลั๊กอิน jQuery นี่ไม่ใช่ส่วนหนึ่งของข้อมูลจำเพาะภาษา Javascript ดังนั้นคุณไม่ควรพึ่งพา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

หากสิ่งที่คุณต้องการคือการแจ้งเตือน () เนื้อหาของอาร์เรย์ของวัตถุฉันขอแนะนำให้คุณกำหนดวิธีการ toString () ในวัตถุด้วยการแจ้งเตือนอย่างง่าย (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ในการดีบักแทนการแจ้งเตือน



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
Quentin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.