Existe uma maneira de usar chaves variáveis ​​em um objeto JavaScript literal?

votos
53

Eu tenho um código como este.

var key = anything;   
var object = {   
    key: key attribute  
};

Eu quero saber se existe uma maneira de substituir esse keycom qualquer coisa.

gostar

var object = {  
    anything: key attribute     
};
Publicado 19/05/2009 em 14:23
fonte usuário
Em outras línguas...                            


8 respostas

votos
91

Em ES6, usar nomes de propriedades computadas .

const key = "anything";   

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

Observe os colchetes ao redor key. Você pode realmente especificar qualquer expressão nos colchetes, e não apenas uma variável.

Respondeu 16/03/2015 em 12:48
fonte usuário

votos
88

Sim. Você pode usar:

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

Ou simplesmente usar o seu segundo método se você tem os valores em mãos ao escrever o programa.

Respondeu 19/05/2009 em 14:27
fonte usuário

votos
8

Isso deve fazer o truque:

var key = "anything";

var json = {};

json[key] = "key attribute";
Respondeu 19/05/2009 em 14:31
fonte usuário

votos
2

Solução:

var key = "anything";

var json = {};

json[key] = "key attribute";
Respondeu 25/02/2016 em 19:45
fonte usuário

votos
0

Em Javascript moderna (ECMAScript 6) você pode sorround a variável com colchetes:

var key = "anything";

var json = {
    [key]: "key attribute"
};
Respondeu 17/05/2018 em 13:52
fonte usuário

votos
-1

Recentemente precisava de uma solução como o uso de cookies passando os valores de chave JSON dinâmico. Usando o https://github.com/js-cookie/js-cookie#json , isso pode ser feito facilmente. Queria para armazenar cada valor da opção selecionada de usuário no cookie, por isso não está perdido em caso de guia ou navegador desligar.

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 } );
    }); 

Depois, você pode recuperar cada valor de chave cookie em cada carregamento de página usando

Cookies.getJSON('option_values');
Respondeu 11/01/2017 em 11:24
fonte usuário

votos
-1

Closures grande trabalho para isso.

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

var key = keyValue(key);
key(value);
Respondeu 06/08/2015 em 17:52
fonte usuário

votos
-2

Bem, não é uma forma "direta" para fazer isso ...

mas isso deve fazê-lo:

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

É um pouco complicado, mas hey, ele funciona!

Respondeu 19/05/2009 em 14:30
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more