É possível percorrer as propriedades em um objeto JavaScript? Por exemplo, eu tenho um objeto JavaScript definido como este:
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
As propriedades serão adicionadas dinamicamente a esse objeto. Existe uma maneira de fazer um loop e verificar se existe uma propriedade? Se sim, como?
javascript
lodash
user3111277
fonte
fonte
lodash
e não é justificada apenas por não precisar o irritantehasOwnProperty
chequeUse
_.forOwn()
.https://lodash.com/docs#forOwn
Observe que as
forOwn
verificaçõeshasOwnProperty
, como você normalmente precisa ao fazer um loop sobre as propriedades de um objeto.forIn
não faz essa verificação.fonte
key
é a segunda param, mas faz sentidoPara o seu desejo declarado de "verificar se existe uma propriedade", você pode usar diretamente o Lo-Dash's
has
.fonte
Definitivamente, você pode fazer isso com o JS de baunilha, como o stecb mostrou, mas acho que
each
é a melhor resposta para a pergunta principal sobre como fazê-lo com o lodash.Como o JohnnyHK mencionou, também existe o
has
método que seria útil para o caso de uso, mas do que foi originalmente declaradoset
pode ser mais útil. Digamos que você queira adicionar algo a esse objeto dinamicamente, como você mencionou:É assim que eu faria, com base na descrição original.
fonte
Vamos pegar o objeto abaixo como exemplo
Primeiro, busque toda a chave no objeto
e depois percorrer
apenas colocando tudo junto
fonte
No ES6, também é possível iterar sobre os valores de um objeto usando o
for..of
loop. Entretanto, isso não funciona imediatamente para objetos JavaScript, pois você deve definir uma propriedade @@ iterator no objeto. Isso funciona da seguinte maneira:for..of
loop solicita que o "objeto seja iterado" (vamos chamá-lo de obj1 para um objeto iterador. O loop itera sobre obj1 chamando sucessivamente o método next () no objeto iterador fornecido e usando o valor retornado como o valor para cada iteração do laço.Aqui está um exemplo:
Agora podemos usar o
for..of
loop:fonte
Seria útil entender por que você precisa fazer isso com o lodash. Se você deseja apenas verificar se existe uma chave em um objeto, não precisa do lodash.
Se você procura ver se existe um valor, pode usar
_.invert
fonte