Подтвердить что ты не робот

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]), я получаю все элементы массива, но для некоторого конкретного случая я хочу получить только имя массива, которое является размером/цветом, как я уже сказал. Есть ли способ достичь этого? Благодаря

4b9b3361

Ответ 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