Here is the example of what I am doing:
var size = new Array("S", "M", "L", "XL", "XXL");
var color = new Array("Red", "Blue", "Green", "White", "Black");
var options = new Array( size, color);
I am doing a loop select form thingies which work good, but I want to fetch the Array child name, in this case - size or color. When I am doing alert(options[0]), I get the whole elements of array. But for some specific case, I want to get only the array name, which is size/color like I have said already. Is there way to achieve that?
8 Answers 8
I would create an object like this:
var options = {
size: ["S", "M", "L", "XL", "XXL"],
color: ["Red", "Blue", "Green", "White", "Black"]
};
alert(Object.keys(options));
To access the keys individualy:
for (var key in options) {
alert(key);
}
P.S.: when you create a new array object do not use new Array use [] instead.
3 Comments
for (var key in options) { alert(key); }you can get using key value something like this :
var size = new Array("S", "M", "L", "XL", "XXL");
var color = new Array("Red", "Blue", "Green", "White", "Black");
var options = new Array(size, color);
var len = options.length;
for(var i = 0; i<len; i++)
{
for(var key in options[i])
{
alert(options[i][key])
}
}
see here : http://jsfiddle.net/8hmRk/8/
1 Comment
There is no way to know that the two members of the options array came from variables named size and color.
They are also not necessarily called that exclusively, any variable could also point to that array.
var notSize = size;
console.log(options[0]); // It is `size` or `notSize`?
One thing you can do is use an object there instead...
var options = {
size: size,
color: color
}
Then you could access options.size or options.color.
Comments
You can't. The array doesn't have a name.
You just have two references to the array, one in the variable and another in the third array.
There is no way to find all the references that exist for a given object.
If the name is important, then store it with the data.
var size = { data: ["S", "M", "L", "XL", "XXL"], name: 'size' };
var color = { data: ["Red", "Blue", "Green", "White", "Black"], name: 'color' };
var options = [size, color];
Obviously you'll have to modify the existing code which accesses the data (since you now have options[0].data[0] instead of options[0][0] but you also have options[0].name).
2 Comments
var color would should up as window.color)Yes it is. You can use
alert(options[0][0])
to get the size "S"
or
alert(options[0][1])
to get the color "Red"
Comments
In that case you don't want to insert size and color inside an array, but into an object
var options = {
'size': size,
'color': color
};
Afterwards you can access the sets of keys by
var keys = Object.keys( options );
Comments
You've made an array of arrays (multidimensional), so options[0] in this case is the size array. you need to reference the first element of the child, which for you is: options[0][0].
If you wanted to loop through all entries you can use the for .. in ... syntax which is described here.
var a = [1,2,4,5,120,12];
for (var val in t) {
console.log(t[val]);
}
var b = ['S','M','L'];
var both = [a,b];
for (var val in both) {
for(val2 in both[val]){console.log(both[val][val2])}
}
Comments
Array is just like any other object. You can give it a name if you want.
var size = new Array("S", "M", "L", "XL", "XXL");
var color = new Array("Red", "Blue", "Green", "White", "Black");
var options = new Array( size, color);
color.name = "color";
size.name = "size";
options[0].name == "size"
>true
[]andnew Arraystackoverflow.com/questions/931872/…