Як я можу переглянути структуру масиву в JavaScript за допомогою alarma ()?


108

Як я можу переглянути структуру масиву в JavaScript за допомогою alert()?


14
Це не відповідає на ваше запитання, але вам слід встановити FireBug і використовувати console.log- це чудово для самоаналізу JavaScript-об'єктів.
Деніз Доган

Що ви маєте на увазі під структурою масиву? Ви можете провести цикл через масив і попередити про кожне значення.
Тім Шмелтер

@ Деніз Доган від console.log Ви маєте на увазі shift + R та параметр "консоль"?
pppttt

1
@Deniz - console.debugнасправді працював би краще.
Метт Бал

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

Відповіді:


122

Дуже базовим є підхід alert(arrayObj.join('\n')), який відображатиме кожен елемент масиву підряд.


5
Це чудово працює. Замініть "arrayObj" на ім'я вашого масиву. Тож якщо ваш масив названий myArray, це ваш рядок коду:alert(myArray.join('\n'));
Тоні Брасунас,

54

EDIT: 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;
}

ця функція змушує фаєрфокс зазнати аварій з розбором масиву, що сортує інтерфейс користувача.
Шахрохіян


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

Краще використовувати 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-форму.
Квентін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.