Jak mogę wyświetlić strukturę tablic w JavaScript za pomocą funkcji alert ()?


108

Jak mogę wyświetlić strukturę tablicy w JavaScript przy użyciu alert()?


14
To nie odpowiada na twoje pytanie, ale powinieneś zainstalować i używać FireBuga console.log- jest świetny do introspekcji obiektów JavaScript.
Deniz Dogan

Co masz na myśli mówiąc o strukturze tablicy? Możesz zapętlić tablicę i ostrzec każdą wartość.
Tim Schmelter

@ Deniz Dogan by console.log czy masz na myśli shift + R i opcję "console"?
pppttt

1
@Deniz - console.debugfaktycznie działałoby lepiej.
Matt Ball

@Tim przez strukturę mam na myśli indeks i wartość, "surowy" widok tablicy jak w PHP printf
pppttt

Odpowiedzi:


122

Bardzo podstawowym podejściem jest alert(arrayObj.join('\n'))wyświetlenie każdego elementu tablicy w wierszu.


5
To działa świetnie. Zastąp „arrayObj” nazwą swojej tablicy. Więc jeśli twoja tablica nazywa się myArray, to jest twój wiersz kodu:alert(myArray.join('\n'));
Tony Brasunas,

54

EDYCJA: Firefox i Google Chrome mają teraz wbudowany JSONobiekt, więc możesz po prostu powiedzieć alert(JSON.stringify(myArray))bez konieczności używania wtyczki jQuery. Nie jest to część specyfikacji języka Javascript, więc nie powinieneś polegać na tym, JSONże obiekt jest obecny we wszystkich przeglądarkach, ale do celów debugowania jest to niezwykle przydatne.

Zwykle używam wtyczki jQuery-json w następujący sposób:

alert( $.toJSON(myArray) );

Spowoduje to wyświetlenie tablicy w formacie

[5, 6, 7, 11]

Jednak do debugowania kodu JavaScript, bardzo polecam Firebug. W rzeczywistości jest on wyposażony w konsolę JavaScript, więc możesz wpisać kod JavaScript dla dowolnej strony i zobaczyć wyniki. Rzeczy takie jak tablice są już wydrukowane w postaci czytelnej dla człowieka używanej powyżej.

Firebug ma również debugger, a także ekrany pomagające w przeglądaniu i debugowaniu HTML i CSS.


32

przekaż swoją tablicę js do funkcji poniżej, a zrobi ona to samo, co funkcja 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;
}

ta funkcja powoduje awarię Firefoksa podczas analizowania sortowalnej tablicy interfejsu użytkownika.
Shahrokhian


8

Polecam użycie toString ().

Dawny. alert(array.toString())lubconsole.log(array.toString())


3

Jeśli ma to na celu debugowanie, radziłbym użyć debugera JavaScript, takiego jak Firebug . Umożliwi to przeglądanie całej zawartości tablic i wiele więcej, w tym modyfikowanie wpisów tablic i przechodzenie przez kod.


2

Jeśli chcesz pokazać za pomocą funkcji alert () zawartość tablicy obiektów, polecam zdefiniowanie w obiekcie metody toString (), a więc z prostym alertem (MyArray); pełna zawartość tablicy zostanie wyświetlona w alercie.

Oto przykład:

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

Następnie, jeśli masz tablicę punktów:

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

Możesz wydrukować po prostu dzwoniąc:

alert(MyArray);

Mam nadzieję że to pomoże!


1

Możesz napisać funkcję, która skonwertuje i sformatuje tę tablicę jako ciąg. Jeszcze lepiej: użyj FireBug do debugowania zamiast alertów.


1

Lepiej użyj Firebug (konsola chrome itp.) I użyj console.dir ()


1

Aby zwiększyć czytelność, możesz użyć:

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

Więcej o JSON.stringify () .

Przykład:

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
Pytanie jest oznaczone tagiem, javascriptktóry brzmi: „O ile nie uwzględniono tagu dla frameworka / biblioteki, oczekiwana jest czysta odpowiedź JavaScript”. Nawet gdyby tak nie było… pytanie dotyczy tablicy, a nie formularza HTML.
Quentin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.