Есть ли способ использовать переменные ключи в литерале объекта JavaScript?
у меня есть такой код.
var key = "anything";
var object = {
key: "key attribute"
};
Я хочу знать, есть ли способ заменить это key
С "ничего".
как
var object = {
"anything": "key attribute"
};
8 ответов:
да. Вы можете использовать:
var key = "anything"; var json = { }; json[key] = "key attribute";
или просто использовать второй метод, если у вас есть значения под рукой при написании программы.
в ES6 используйте имена вычисляемых свойств.
const key = "anything"; const object = { [key]: "key attribute" // ^^^^^ COMPUTED PROPERTY NAME };
обратите внимание на квадратные скобки
key
. Вы можете указать любое выражение в квадратных скобках, а не только переменную.
на современном Javascript (ECMAScript 6) Вы можете сокрушить переменную с квадратными скобками:
var key = "anything"; var json = { [key]: "key attribute" };
закрытие отлично подходит для этого.
function keyValue(key){ return function(value){ var object = {}; object[key] = value; return object; } } var key = keyValue(key); key(value);
недавно потребовалось решение, как установить файлы cookie, передающие значения динамического ключа 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 } ); });
затем вы можете получить каждое значение ключа cookie на каждой странице загрузки с помощью
Cookies.getJSON('option_values');