2009-05-19 2 views

ответ

86

Да. Вы можете использовать:

var key = "anything"; 
var json = { }; 
json[key] = "key attribute"; 

Или просто используйте свой второй метод, если у вас есть значения при написании программы.

-2

Ну, не «прямой» способ сделать это ...

, но это должно сделать это:

json[key] = json.key; 
json.key = undefined; 

Его немного сложно, но эй, это работает!

8

Это должно сделать трюк:

var key = "anything"; 

var json = {}; 

json[key] = "key attribute"; 
+0

Но он хочет сделать это в контексте литерала объекта. – 2017-04-17 17:15:03

86

В ES6 используйте computed property names.

const key = "anything"; 

const object = { 
    [key]: "key attribute" 
// ^^^^^ COMPUTED PROPERTY NAME 
}; 

Обратите внимание на квадратные скобки вокруг key. Фактически вы можете указать любое выражение в квадратных скобках, а не только переменную.

+8

Это должен быть новый принятый ответ – Phoenix

+2

работает на хром как-хорошо. Самый простой и самый лучший ответ (y) –

-1

Закрытие отлично работает для этого.

function keyValue(key){ 
    return function(value){ 
    var object = {}; 
    object[key] = value; 
    return object; 
    } 
} 

var key = keyValue(key); 
key(value); 
+0

Закрытие - это просто используемый здесь механизм. Концепция HOF. – 2017-04-17 17:12:53

+0

HOF = Функции более высокого порядка. – Rick

2

Решение:

var key = "anything"; 

var json = {}; 

json[key] = "key attribute"; 
+0

Пожалуйста, объясните свое решение. –

+1

@MartinZabel Это вряд ли нуждается в объяснении. – 2017-04-17 17:14:05

-1

Недавно было необходимо решение, как установить куки прохождения ключевых значений динамического JSon. Используя https://github.com/js-cookie/js-cookie#json, это можно сделать легко. Требуется сохранить каждое выбранное значение параметра пользователя в cookie, чтобы оно не было потеряно при закрытии вкладки или браузера.

var json = { 
     option_values : {} 
    }; 
    $('option:selected').each(function(index, el) { 
     var option = $(this); 
     var optionText = option.text(); 
     var key = 'option_' + index; 
     json.option_values[key] = optionText; 
     Cookies.set('option_values', json, { expires: 7 }); 
    }); 

Затем вы можете получить каждое значение ключа печенья на каждой загрузке страницы с помощью

Cookies.getJSON('option_values'); 
Смежные вопросы