Alert () ile JavaScript'te dizi yapısını nasıl görüntüleyebilirim?


108

JavaScript'te bir dizinin yapısını kullanarak nasıl görüntüleyebilirim alert()?


14
Bu, sorunuzu yanıtlamaz, ancak FireBug'u kurmalı ve kullanmalısınız console.log- JavaScript nesnelerinin iç gözlemi için harikadır.
Deniz Doğan

Dizi yapısı ile ne demek istiyorsun? Dizide döngü yapabilir ve her bir değeri uyarabilirsiniz.
Tim Schmelter

Console.log'dan @ Deniz Doğan Shift + R ve "konsol" seçeneğini mi kastediyorsunuz?
pppttt

1
@Deniz - console.debugaslında daha iyi çalışır.
Matt Ball

@Yapısı ile zaman, PHP
printf'deki

Yanıtlar:


122

Çok basit bir yaklaşım, alert(arrayObj.join('\n'))her dizi elemanını arka arkaya görüntüleyecek olmasıdır.


5
Bu harika çalışıyor. "DiziObj" yi dizinizin adıyla değiştirin. Yani diziniz myArray olarak adlandırılmışsa, bu sizin kod satırınızdır:alert(myArray.join('\n'));
Tony Brasunas

54

DÜZENLEME: Firefox ve Google Chrome artık yerleşik bir JSONnesneye sahip, böylece alert(JSON.stringify(myArray))bir jQuery eklentisi kullanmanıza gerek kalmadan söyleyebilirsiniz . Bu, Javascript dil spesifikasyonunun bir parçası değildir, bu nedenle JSONtüm tarayıcılarda mevcut olan nesneye güvenmemelisiniz , ancak hata ayıklama amacıyla inanılmaz derecede yararlıdır.

JQuery-json eklentisini aşağıdaki gibi kullanma eğilimindeyim :

alert( $.toJSON(myArray) );

Bu, diziyi şu şekilde yazdırır:

[5, 6, 7, 11]

Ancak, JavaScript kod hata ayıklama için ben son derece tavsiye Kundakçı Eğer herhangi bir sayfa için JavaScript kodunu yazıp sonuçları görebilmeniz için, Aslında bir JavaScript konsolu ile birlikte gelir. Diziler gibi şeyler zaten yukarıda kullanılan insan tarafından okunabilir biçimde basılmıştır.

Firebug ayrıca bir hata ayıklayıcının yanı sıra HTML ve CSS'nizi görüntülemenize ve hata ayıklamanıza yardımcı olacak ekranlara sahiptir.


32

js dizinizi aşağıdaki işleve geçirin ve php print_r () işlevi ile aynı şeyi yapacaktı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;
}

bu işlev firefox'un bir UI sıralanabilir dizisini ayrıştırarak çökmesine neden olur.
Shahrokhian


8

ToString () kullanmanızı tavsiye ederim.

Ör. alert(array.toString())veyaconsole.log(array.toString())


3

Bu, hata ayıklama amaçlıysa, Firebug gibi bir JavaScript hata ayıklayıcı kullanmanızı tavsiye ederim . Dizi girişlerini değiştirmek ve kodda ilerlemek dahil dizilerin tüm içeriğini ve daha fazlasını görüntülemenizi sağlar.


2

İstediğiniz şey bir uyarı () nesneler dizisinin içeriğini göstermekse, nesnede toString () yöntemini basit bir uyarı (MyArray) ile tanımlamanızı tavsiye ederim; dizinin tam içeriği uyarıda gösterilecektir.

İşte bir örnek:

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

O zaman bir dizi puanınız varsa:

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

Sadece arayarak yazdırabilirsiniz:

alert(MyArray);

Bu yardımcı olur umarım!


1

Bu diziyi dizge olarak dönüştürecek ve biçimlendirecek bir işlev yazabilirsiniz. Daha da iyisi: hata ayıklama için uyarılar yerine FireBug kullanın .


1

Firebug'ı (krom konsolu vb.) Ve console.dir () 'i daha iyi kullanın


1

Okunabilirlik amacıyla şunları kullanabilirsiniz:

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

JSON.stringify () hakkında daha fazla bilgi .

Misal:

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
Soru, javascript"Çerçeve / kitaplık için bir etiket de dahil edilmedikçe, saf bir JavaScript yanıtı bekleniyor" şeklinde etiketlenir . Durum böyle olmasa bile… soru HTML formu değil, dizi hakkında soru sormaktır.
Quentin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.