2014-10-05 3 views
0

При создании массива мы можем игнорировать поле ключа и позволить JavaScript генерировать ключи для нас в порядке от 0 до.Автоматическое назначение числовых клавиш объекта

var color = ['green', 'blue', 'red', 'yellow', 'purple']; 

Что мы можем получить доступ как

alert(color[0]); //green 

Я хочу, чтобы создать объект с помощью цифровых клавиш, но я не хотел бы определить их в явном виде, является таким же методом можно?

Я попытался

var color = {'green', 'blue', 'red', 'yellow', 'purple'}; 
console.log(color); 

Но это не работает, как ожидалось, возвращает SyntaxError: отсутствует: после ID недвижимости

+0

Как я знаю, вы не можете создать объект без ключа: значение пар. – Nico

+1

Объект с цифровыми клавишами лучше всего заменять массивом. Почему тебе нужно что-то подобное? Насколько я понял, вам нужен этот «{1:« зеленый », 2:« синий »}' ?? –

+0

@ RokoC.Buljan Мне нужно проверить, существует ли ключ, который я видел в других сообщениях, лучше всего с if (ключ в obj) ... Вместо if (typeof = undefined через массив – gummage

ответ

0

Я не думаю, что его можно. Согласно определению W3C javascript:

Объекты JavaScript являются контейнерами для именованных значений.

Именованные значения записываются как пары имени: значение (имя и значение, разделенные точкой с запятой).

Имя: пары значений в объектах JavaScript называются свойствами объекта.

Следовательно, вы не можете этого сделать. Либо используйте цикл, чтобы создать такую ​​ситуацию. Например:

var obj = {}; 
for(var i = 0; i < length; i += 1) { 
    obj[i] = color[i] ; 
} 
0

Невозможно. Это как раз объекты js.

Не можете ли вы просто перебрать массив и поместить данные внутри объекта?

var color = ['green', 'blue', 'red', 'yellow', 'purple']; 
var colors_obj = {}; 

for(var color_num_key in color) { 
    colors_obj[color_num_key] = color[color_num_key]; 
} 

console.log(colors_obj); 

JS Fiddle demo

0

Если вы настаиваете, @reduce решение Canon и @ ручного решения Fyre являются как хорошо, но:

$.extend({}, color)     // jQuery 
_.extend({}, color)     // Underscore 
Object.assign({}, color)   // ES6 
LIB.extend_like_api({}, color)  // all other libraries in the world 

По сути, все это сделать, это удалить «array- ness "массива.

Смежные вопросы