2016-03-31 17 views
1

Sadece belirli bir değeri bir JSON dizisinden işaret etmek istiyorum. JSON dizininJavascript'te bir JSON dizisinden belirli bir değer elde etmek için değişken bir dizin olarak nasıl kullanılır?

Örnek:

alert(javascript_array["00002"].Company); 

Ama hiç böyle bir rekor aranacak bir dinamik değişken kullanmak istiyorum:

{ 
    "00002": { 
     "Job Number": "00002", 
     "Company": "Corporate", 
     "Supervisor": "Great Person", 
     "Date Input": "2016-01-07" 
    }, 

    "00003": { 
     "Job Number": "00003", 
     "Company": "SmallGuy", 
     "Supervisor": "Awful Person", 
     "Date Input": "2012-03-05" 
    } 
} 

Bu JavaScript çalışır

var my_variable = 00002; 

//OR I've tried: 

var my_variable = "'"+00002+"'"; 

alert(javascript_array[my_variable].Company); //DOES NOT WORK. UNDEFINED?? 

Ne yaptığımın bir önemi yok, değişken bir orta ölçekli çağrı kullanamıyorum .

Yardım lütfen!

+1

'my_variable' nedir? Burada çalışır: https://jsfiddle.net/wsq3yj30/ – Rayon

+0

Üzgünüm, sadece bir değişiklik yaptım. İdeal olarak "my_variable" 00002, 00003, 99999'a kadar olabilir ... – Graeme

+0

Sadece yap: 'var my_variable =" 00002 "', gereksiz alıntılar ekliyorsunuz ('' '00002' ''), işte bu yüzden bulamıyorum –

cevap

2

Dizeyi anahtar olarak kullanın.

var object = { "00002": { "Job Number": "00002", "Company": "Corporate", "Supervisor": "Great Person", "Date Input": "2016-01-07" }, "00003": { "Job Number": "00003", "Company": "SmallGuy", "Supervisor": "Awful Person", "Date Input": "2012-03-05" } } 
 
    my_variable = '00002'; 
 

 
document.write(object[my_variable].Company);

var my_variable = '00002'; 

nesneden tüm anahtarları almak için kullanabileceğiniz Object.keys():

var object = { "00002": { "Job Number": "00002", "Company": "Corporate", "Supervisor": "Great Person", "Date Input": "2016-01-07" }, "00003": { "Job Number": "00003", "Company": "SmallGuy", "Supervisor": "Awful Person", "Date Input": "2012-03-05" } }, 
 
    keys = Object.keys(object); 
 

 
keys.forEach(function (k) { 
 
    document.write(object[k].Company + '<br>'); 
 
});

1

Anahtar bir dize, b senin değişkenin yok, yani maç yok. Sadece bu kullanın:

var my_variable = "00002"; 
0

Eğer dizeleri kullanmak gerekir JSON nesnesi için anahtar öğelere erişmek için değil, eğer .toString() kullanarak bir dizeye değeri dönüştürmek için çalışacaktır. İlk durum için bir numara tanımlamak çalışıyorsunuz: 00002 rağmen

var my_variable = 00002; 

o değeri 2 içerirler ve bu "2" olan bir dizeye dönüştürülür olacak gibi bir sayı için geçerli bir değer değil. JSON’unuzda böyle bir javascript_array["2"] yoktur. gereksiz tırnak '...' ekliyoruz bununla birlikte

"'"+00002+"'" => "'"+2+"'" => "'2'" 

Ayrıca böyle javascript_array["'2'"] yok: İkinci vaka benzer bir sorun vardır. Bu durumda (,'u işaret ediyor) my_variable değerini "00002" değeriyle bir dize olarak tanımlayın.

var my_variable = "00002"; 
İlgili konular