Estou retirando itens do DOM com jQuery e quero definir uma propriedade em um objeto usando o id
elemento DOM.
Exemplo
const obj = {}
jQuery(itemsFromDom).each(function() {
const element = jQuery(this)
const name = element.attr('id')
const value = element.attr('value')
// Here is the problem
obj.name = value
})
Se itemsFromDom
incluir um elemento com um id
"myId", desejo obj
ter uma propriedade chamada "myId". O acima me dá name
.
Como nomeio uma propriedade de um objeto usando uma variável usando JavaScript?
javascript
jquery
object
syntax
Todd R
fonte
fonte
Respostas:
Você pode usar esta sintaxe equivalente:
fonte
Com o ECMAScript 2015, você pode fazê-lo diretamente na declaração do objeto usando a notação de colchete:
Onde
key
pode haver qualquer tipo de expressão (por exemplo, uma variável) retornando um valor:fonte
obj[name]=value
quando eu poderia usar apenas a sua sugestão em vezVocê pode até criar uma lista de objetos como este
fonte
Existem duas notações diferentes para acessar propriedades do objeto
A notação de ponto é rápida e fácil, mas você deve usar o nome real da propriedade explicitamente. Sem substituição, variáveis, etc.
A notação do suporte é aberta. Ele usa uma sequência, mas você pode produzi-la usando qualquer código js legal. Você pode especificar a string como literal (embora, nesse caso, a notação de pontos seja mais fácil) ou usar uma variável ou calcular de alguma forma.
Então, todos estes definir o myObj propriedade chamada prop1 ao valor Olá :
Armadilhas:
tl; dnr : Se você quiser calcular ou fazer referência a chave que você deve usar notação de colchetes . Se você estiver usando a chave explicitamente, use a notação de ponto para obter um código claro simples.
Nota: existem outras respostas boas e corretas, mas eu pessoalmente as achei um pouco breves, provenientes de uma baixa familiaridade com a peculiaridade do JS on-the-fly. Isso pode ser útil para algumas pessoas.
fonte
Com o lodash, você pode criar um novo objeto como este _.set :
Ou você pode definir o objeto existente como este:
Você deve tomar cuidado se quiser usar ponto (".") No seu caminho, porque o lodash pode definir a hierarquia, por exemplo:
fonte
Primeiro, precisamos definir chave como variável e, em seguida, atribuir como chave como objeto., Por exemplo
fonte
Com o advento do ES2015 Object.assign e nomes de propriedades calculados, o código do OP se resume a:
fonte
Se você deseja adicionar campos a um objeto dinamicamente, a maneira mais simples de fazer isso é a seguinte:
Isso criará um objeto de dados que possui os seguintes campos:
fonte
Se você tiver um objeto, poderá criar uma matriz de chaves para mapear e criar um novo objeto a partir das chaves e valores anteriores.
fonte
O ajavascript possui dois tipos de anotação para buscar propriedades do objeto javascript:
Obj = {};
1) anotação (.) Por exemplo. Obj.id isso só funcionará se o objeto já tiver uma propriedade com o nome 'id'
2) ([]) anotação, por exemplo. Obj [id] aqui, se o objeto não tiver nenhuma propriedade com o nome 'id', ele criará uma nova propriedade com o nome 'id'.
então, para o exemplo abaixo:
Uma nova propriedade será criada sempre que você escrever Obj [nome]. E se a propriedade já existir com o mesmo nome, ela será substituída.
fonte
Relacionado ao assunto, não especificamente para jquery. Eu usei isso em projetos de reação ec6, talvez ajude alguém:
PS: Lembre-se do caractere de citação.
fonte
objectname.newProperty = value;
fonte
fonte