Как я могу просмотреть структуру массива в JavaScript с помощью alert ()?


108

Как я могу просмотреть структуру массива в JavaScript с помощью alert()?


14
Это не отвечает на ваш вопрос, но вы должны установить FireBug и использовать console.log- он отлично подходит для самоанализа объектов JavaScript.
Дениз Доган,

Что вы имеете в виду под структурой массива? Вы можете просмотреть массив и предупредить каждое значение.
Тим Шмелтер

@ Дениз Доган под console.log вы имеете в виду shift + R и опцию "console"?
pppttt 09

1
@Deniz - на console.debugсамом деле сработало бы лучше.
Мэтт Болл,

@Tim под структурой я имею в виду индекс и значение, "сырое" представление массива, как в PHP printf
pppttt

Ответы:


122

Самый простой подход - alert(arrayObj.join('\n'))это отображение каждого элемента массива в строке.


5
Это прекрасно работает. Замените arrayObj именем вашего массива. Итак, если ваш массив назван myArray, это ваша строка кода:alert(myArray.join('\n'));
Тони Брасунас,

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 при разборе сортируемого массива пользовательского интерфейса.
Shahrokhian


8

Я бы рекомендовал использовать toString ().

Ex. alert(array.toString()), илиconsole.log(array.toString())


3

Если это нужно для отладки, я бы посоветовал вам использовать отладчик JavaScript, такой как Firebug . Это позволит вам просматривать все содержимое массивов и многое другое, включая изменение записей массива и пошаговое выполнение кода.


2

Если вы хотите показать с помощью alert () содержимое массива объектов, я рекомендую вам определить в объекте метод 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

Лучше используйте Firebug (хромированная консоль и т. Д.) И используйте 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-формы.
Quentin
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.