"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso selecionar uma propriedade aleatória de um objeto JavaScript de forma concisa?

Como posso selecionar uma propriedade aleatória de um objeto JavaScript de forma concisa?

Publicado em 2024-11-07
Navegar:373

How can I select a random property from a JavaScript object concisely?

Selecionando uma propriedade aleatória de um objeto JavaScript de forma concisa

Em JavaScript, os objetos são pares de valores-chave armazenados em uma tabela hash. A recuperação de uma propriedade específica de um objeto requer o conhecimento da chave exata da propriedade. No entanto, às vezes pode ser desejável selecionar uma propriedade aleatória de um objeto.

Uma abordagem comum envolve iterar sobre as propriedades do objeto, contá-las e, em seguida, gerar um número inteiro aleatório dentro desse intervalo. Usando essa abordagem, você iteraria sobre o objeto uma vez para determinar o comprimento e, em seguida, iteraria novamente para encontrar a propriedade aleatória naquele índice.

No entanto, há uma maneira mais concisa e muitas vezes mais rápida de atingir esse objetivo:

var randomProperty = function (obj) {
    var keys = Object.keys(obj);
    return obj[keys[ keys.length * Math.random() << 0]];
};

Essa abordagem utiliza o método Object.keys(), que retorna uma matriz de todas as chaves de propriedade no objeto. Multiplicando o comprimento deste array por um valor aleatório menor que 1 (usando deslocamento de bits), obtemos um índice aleatório dentro do array. A indexação na matriz com este índice aleatório fornece a chave da propriedade selecionada. Por fim, acessar o objeto usando esta chave recupera o valor da propriedade associada.

Este método é mais conciso e geralmente tem desempenho mais rápido do que abordagens iterativas, tornando-o a escolha preferida para selecionar uma propriedade aleatória de um objeto JavaScript.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3