Создать объект с ключами из значений другого объекта
Здравствуйте. Подскажите пожалуйста как мне создать объект с ключами из значений другого объекта?
Сейчас создаю так: var typeButton = { 'type1': 1, 'type2': 2, 'type3': 3 }, actionByTypeButton = {}; actionByTypeButton[typeButton['type1']] = 'aaa'; actionByTypeButton[typeButton['type2']] = 'bbb'; actionByTypeButton[typeButton['type3']] = 'ccc'; Подскажите можно ли создать объект actionByTypeButton примерно так: var typeButton = { 'type1': 1, 'type2': 2, 'type3': 3 }, actionByTypeButton = [ typeButton['type1'] = 'aaa', typeButton['type2'] = 'bbb', typeButton['type3'] = 'ccc' ]; Так работает, но переприсваевает typeButton. К примеру если вызвать: console.log(typeButton['type1']); // 'aaa' |
Цитата:
И вот эта вот "конструкция" Цитата:
|
Цитата:
var typeButton = { 'type1': 1, 'type2': 2, 'type3': 3 }; var actionByTypeButton = []; actionByTypeButton[typeButton['type1']] = 'aaa'; actionByTypeButton[typeButton['type2']] = 'bbb'; actionByTypeButton[typeButton['type3']] = 'ccc'; alert(actionByTypeButton); Но массив получается без нулевого элемента... :( |
Цитата:
{ "ключ": "значение" } Если отвечать конкретно на вопрос. То получится такой объект - var actionByTypeButton = { '1': '', '2': '', '3': '' } Объект с ключами из значений другого объекта. Но, я так понимаю нужно получить ключи объекта typeButton, а не их значения. var copyKeys = function(p, v) { var keys = Object.keys(p); var o = {}; keys.forEach(function(k, i) { o[k] = v[i]; }); return o; }; var o = copyKeys( {'type1': 1,'type2': 2,'type3': 3}, ['aaa', 'bbb', 'ccc'] ); alert(JSON.stringify(o)); Функция создающая новый объект с ключами объекта прототипа и со значениями из аргумента в виде массива. |
Часовой пояс GMT +3, время: 00:09. |