2011-05-31 15 views
5

Böyle değişken iç JSON nesnesi vardır:Geçerli JSON mülkünün adını, JavaScript'te çukurlarken yinelemek ister misiniz?

var chessPieces = { 
    "p-w-1" : { 
     "role":"pawn", 
     "position":{"x":1, "y":2}, 
     "state":"free", 
     "virgin":"yes" 
    }, 
    "p-w-2" : { 
     "role":"pawn", 
     "position":{"x":2, "y":2}, 
     "state":"free", 
     "virgin":"yes" 
    },... 
}; 

Ve ilerlerken her döngü için onları yalak değilim:

for (var piece in chessPieces){ 
    //some code 
} 

Nasıl bu güncel parçalar adını alacağı? Örneğin, şu anda ilk öğe (parça = 0): chessPiece[piece].GiveMeTheName ==> dizgesinde "p-w-1" dizesiyle sonuçlanıyoruz.

şeye bakmak gerek çünkü ben aslında işlevi içine akım elemanı geçmek niyetinde, bu nedenle böyle bir şey görünecektir: eğer öyleyse,

//constructor for this function looks like this: function setPiece(piece,x,y); 
function setPiece(chessPiece[piece],chessPiece[piece].position.x,chessPiece[piece].position.y){ 
    //and here I need to get something like 
    piece.GiveMeTheName ==> which gives me string "p-w-1" 
} 

Ben de projede jQuery kullanıyorum Bu kütüphanede kullanılabilir bir şey var, bana haber ver.

Şimdiden teşekkürler!

+0

kendisi parça adını – mplungjan

+0

Lanet olsun tutan, p-w-1 basar. Ben cevap vermeden önce gerçekten rep kaybettim :( – mplungjan

cevap

2

Erm. piece zaten nesnenin adı değil mi? JavaScript'teki for ... in anahtar adını verir. Eğer for (var piece in chessPieces) console.log(piece); yaptığınızda

Yani, parça (... lütfen var parçası) için p-w-2 vb

+0

Teşekkürler, ben chrome konsol bana satıldı ne zaman 'satrançPieces [1] ' – Happy

+1

' satrançPieces 'yazarken undefined beri karışık oldu, ve bir hash tablo olduğunu varsayalım Ayrıca JavaScript'te bir nesne .. 1'in endeksine sahip olması .. un-js-objecty. – Pwnna

7

$.each(obj, fn)'u kullanırdım. Fonksiyon, mevcut elemanın nesne tuşuna erişim sağlar.

$.each(chessPieces, function(key, value) { 

    //key = "p-w-1" 
    //value = { "role":"pawn", ... } 
    //this === value 

}); 
4
for (var piece in chessPieces){ 
    alert(piece) 
} 
İlgili konular