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

108

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

pppttt
источник
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())

dk123
источник
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