Использование JavaScript метод forEach
массива:
JSFiddle here.
var mainArray = ["thing1", "thing2", "thing3"]
var mainObj = {};
mainArray.forEach(function(curr, ii) {
mainObj[curr] = { 'key1': 'value' + (ii * 3 + 1), 'key2': 'value' + (ii * 3 + 2), 'key3': 'value' + (ii * 3 + 3) }
})
console.log(mainObj)
Выходы:
{
"thing1": { "key1": "value1", "key2": "value2", "key3": "value3" },
"thing2": { "key1": "value4", "key2": "value5", "key3": "value6" },
"thing3": { "key1": "value7", "key2": "value8", "key3": "value9" }
}
И могут быть доступны mainObj.thing1
В качестве альтернативы, с помощью JavaScript map
метода:
Another JSFiddle here.
var mainArray = ["thing1", "thing2", "thing3"]
var newArray = mainArray.map(function(curr, ii) {
var obj = {}
obj[curr] = { 'key1': 'value' + (ii * 3 + 1), 'key2': 'value' + (ii * 3 + 2), 'key3': 'value' + (ii * 3 + 3) }
return obj
})
console.log(newArray)
Выходов:
[
{ "thing1": { "key1": "value1", "key2": "value2", "key3": "value3" } },
{ "thing2": { "key1": "value4", "key2": "value5", "key3": "value6" } },
{ "thing3": { "key1": "value7", "key2": "value8", "key3": "value9" } }
]
Однако map
только возвращает массив. Поэтому доступ к элементам будет выглядеть как newArray[0].thing1
, который, я думаю, нечетный.
Или, если вы желаете, чтобы просто сплести их вместе:
JSFiddle weave.
var mainArray = ["thing1", "thing2", "thing3"]
var newArray = [];
mainArray.forEach(function(curr, ii, arr) {
newArray.push(curr,
{
'key1': 'value' + (ii * 3 + 1),
'key2': 'value' + (ii * 3 + 2),
'key3': 'value' + (ii * 3 + 3)
}
);
})
console.log(newArray)
Выходы:
[
"thing1", { "key1": "value1", "key2": "value2", "key3": "value3" },
"thing2", { "key1": "value4", "key2": "value5", "key3": "value6" },
"thing3", { "key1": "value7", "key2": "value8", "key3": "value9" }
]
Были ли вы планируете ссылки mainArray [0] или mainArray [ "thing1"]/mainArray.thing1? – James
[В javascript нет ассоциативных массивов!] (Http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/) Пожалуйста, отредактируйте свой вопрос, чтобы отразить то, что вы имеете в виду, и используйте синтаксис js в вашем примере. – Bergi