Làm cách nào để xem cấu trúc mảng trong JavaScript với alert ()?


108

Làm cách nào để xem cấu trúc của một mảng trong JavaScript bằng cách sử dụng alert()?


14
Điều này không trả lời câu hỏi của bạn, nhưng bạn nên cài đặt FireBug và sử dụng console.log- nó rất tốt để xem xét nội tâm các đối tượng JavaScript.
Deniz Dogan

Ý bạn là gì với cấu trúc mảng? Bạn có thể lặp qua mảng và cảnh báo từng giá trị.
Tim Schmelter

@ Deniz Dogan theo console.log ý bạn là shift + R và tùy chọn "console"?
pppttt

1
@Deniz - console.debugthực sự sẽ hoạt động tốt hơn.
Matt Ball

@ Tim bởi cấu trúc tôi có nghĩa là chỉ số và giá trị, "thô" quan điểm của mảng như trong PHP printf
pppttt

Câu trả lời:


122

Một cách tiếp cận rất cơ bản là alert(arrayObj.join('\n')), sẽ hiển thị từng phần tử mảng trong một hàng.


5
Điều này hoạt động tuyệt vời. Thay thế "arrayObj" bằng tên mảng của bạn. Vì vậy, nếu mảng của bạn được đặt tên myArray, đây là dòng code của bạn:alert(myArray.join('\n'));
Tony Brasunas

54

CHỈNH SỬA: Firefox và Google Chrome hiện có một JSONđối tượng tích hợp sẵn, vì vậy bạn có thể nói alert(JSON.stringify(myArray))mà không cần sử dụng plugin jQuery. Đây không phải là một phần của đặc tả ngôn ngữ Javascript, vì vậy bạn không nên dựa vàoJSON đối tượng hiện diện trong tất cả các trình duyệt, nhưng đối với mục đích gỡ lỗi, nó cực kỳ hữu ích.

Tôi có xu hướng sử dụng plugin jQuery-json như sau:

alert( $.toJSON(myArray) );

Điều này in mảng ở định dạng như

[5, 6, 7, 11]

Tuy nhiên, để gỡ lỗi mã Javascript của bạn, tôi đánh giá cao đề nghị Firebug Nó thực sự đi kèm với một bảng điều khiển Javascript, vì vậy bạn có thể gõ ra mã Javascript cho bất kỳ trang nào và xem kết quả. Những thứ như mảng đã được in ở dạng con người có thể đọc được được sử dụng ở trên.

Firebug cũng có một trình gỡ lỗi, cũng như các màn hình để giúp bạn xem và gỡ lỗi HTML và CSS của mình.


32

chuyển mảng js của bạn vào hàm bên dưới và nó sẽ hoạt động tương tự như hàm 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;
}

chức năng này làm cho firefox bị lỗi khi phân tích cú pháp một mảng có thể sắp xếp giao diện người dùng.
Shahrokhian


8

Tôi khuyên bạn nên sử dụng toString ().

Ví dụ. alert(array.toString()), hoặc làconsole.log(array.toString())


3

Nếu điều này dành cho mục đích gỡ lỗi, tôi khuyên bạn nên sử dụng trình gỡ lỗi JavaScript như Firebug . Nó sẽ cho phép bạn xem toàn bộ nội dung của mảng và hơn thế nữa, bao gồm cả việc sửa đổi các mục nhập mảng và chuyển qua mã.


2

Nếu những gì bạn muốn là hiển thị nội dung của một mảng đối tượng với một alert (), tôi khuyên bạn nên xác định trong đối tượng phương thức toString () như vậy với một cảnh báo đơn giản (MyArray); nội dung đầy đủ của mảng sẽ được hiển thị trong cảnh báo.

Đây là một ví dụ:

//-------------------------------------------------------------------
// 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 + ") ";
    };
 }

Sau đó, nếu bạn có một mảng các điểm:

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

Bạn có thể in chỉ cần gọi:

alert(MyArray);

Hi vọng điêu nay co ich!


1

Bạn có thể viết một hàm sẽ chuyển đổi và định dạng mảng này dưới dạng chuỗi. Tốt hơn nữa: sử dụng FireBug để gỡ lỗi thay vì cảnh báo.


1

Sử dụng tốt hơn Firebug (bảng điều khiển chrome, v.v.) và sử dụng console.dir ()


1

Đối với mục đích dễ đọc, bạn có thể sử dụng:

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

Tìm hiểu thêm về JSON.stringify () .

Thí dụ:

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
Câu hỏi được gắn thẻ javascriptcó nội dung "Trừ khi một thẻ cho khung / thư viện cũng được bao gồm, câu trả lời thuần JavaScript được mong đợi". Ngay cả khi đó không phải là trường hợp… câu hỏi đang hỏi về một mảng, không phải một biểu mẫu HTML.
Quentin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.