Javascript Array внутри массива - как я могу назвать имя дочернего массива
Вот пример того, что я делаю:
var size = new Array("S", "M", "L", "XL", "XXL");
var color = new Array("Red", "Blue", "Green", "White", "Black");
var options = new Array( size, color);
Я занимаюсь созданием форм цикла, которые работают хорошо, но я хочу получить дочернее имя Array, в данном случае - размер или цвет. Когда я делаю предупреждение (опции [0]), я получаю все элементы массива, но для некоторого конкретного случая я хочу получить только имя массива, которое является размером/цветом, как я уже сказал. Есть ли способ достичь этого? Благодаря
Ответы
Ответ 1
Я бы создал такой объект:
var options = {
size: ["S", "M", "L", "XL", "XXL"],
color: ["Red", "Blue", "Green", "White", "Black"]
};
alert(Object.keys(options));
Чтобы получить доступ к отдельным ключам:
for (var key in options) {
alert(key);
}
P.S.: при создании нового объекта массива не используйте new Array
вместо []
.
Ответ 2
вы можете использовать key
значение примерно так:
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])
}
}
см. здесь: http://jsfiddle.net/8hmRk/8/
Ответ 3
Нет никакого способа узнать, что два элемента массива options
пришли из переменных с именем size
и color
.
Они также не обязательно называются исключительно, любая переменная может также указывать на этот массив.
var notSize = size;
console.log(options[0]); // It is `size` or `notSize`?
Одна вещь, которую вы можете сделать, это использовать вместо нее объект...
var options = {
size: size,
color: color
}
Затем вы можете получить доступ к options.size
или options.color
.
Ответ 4
Вы не можете. Массив не имеет имени.
У вас есть только две ссылки на массив: одна в переменной и другая в третьем массиве.
Невозможно найти все ссылки, которые существуют для данного объекта.
Если имя важно, сохраните его с данными.
var size = { data: ["S", "M", "L", "XL", "XXL"], name: 'size' };
var color = { data: ["Red", "Blue", "Green", "White", "Black"], name: 'color' };
var options = [size, color];
Очевидно, вам придется изменить существующий код, который обращается к данным (поскольку теперь у вас есть options[0].data[0]
вместо options[0][0]
, но у вас также есть options[0].name
).
Ответ 5
Да, это так.
Вы можете использовать
alert(options[0][0])
чтобы получить размер "S"
или
alert(options[0][1])
чтобы получить цвет "Красный"
Ответ 6
Вы создали массив массивов (многомерных), поэтому опции [0] в этом случае представляют собой массив размеров. вам нужно ссылаться на первый элемент дочернего элемента, который для вас: options [0] [0].
Если вы хотите просмотреть все записи, вы можете использовать синтаксис for .. in ...
, который описан здесь.
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])}
}
Ответ 7
В этом случае вы не хотите вставлять size
и color
внутри массива, а в объект
var options = {
'size': size,
'color': color
};
После этого вы можете получить доступ к наборам клавиш
var keys = Object.keys( options );
Ответ 8
Массив как любой другой объект. Вы можете дать ему имя, если хотите.
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