Reputation: 41
I simply want to pinpoint a specific value out of a JSON array.
Sample of JSON array:
{
"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"
}
}
This works in Javascript:
alert(javascript_array["00002"].Company);
But I want use a dynamic variable to call a record, like this:
var my_variable = 00002;
//OR I've tried:
var my_variable = "'"+00002+"'";
alert(javascript_array[my_variable].Company); //DOES NOT WORK. UNDEFINED??
No matter what I do, I can't use a variable mid-array call.
Help please!
Upvotes: 1
Views: 1320
Reputation: 21565
To access key items for a JSON object you need to use strings, but if not it will attempt to convert the value into a string using .toString()
. For your first case you are attempting to define a number:
var my_variable = 00002;
Although 00002
isn't a valid value for a number, as such it will contain the value 2
, and converted to a string it's "2"
. In your JSON there is no such javascript_array["2"]
. The second case has a similar problem:
"'"+00002+"'" => "'"+2+"'" => "'2'"
Also there is not such javascript_array["'2'"]
, along with this you are adding unneeded quotes '...'
. In this case (as others pointed out) just define my_variable
as a string with the value "00002"
.
var my_variable = "00002";
Upvotes: 0
Reputation: 386560
Use the string as key.
var my_variable = '00002';
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);
For getting all keys from the object, you can use 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>');
});
Upvotes: 2
Reputation: 5792
Your key is a string, but your variable isn't, so there's no match. Just use this:
var my_variable = "00002";
Upvotes: 1