"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo seleccionar una propiedad aleatoria de un objeto JavaScript de forma concisa?

¿Cómo puedo seleccionar una propiedad aleatoria de un objeto JavaScript de forma concisa?

Publicado el 2024-11-07
Navegar:864

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

Seleccionar una propiedad aleatoria de un objeto JavaScript de forma concisa

En JavaScript, los objetos son pares clave-valor almacenados en una tabla hash. Recuperar una propiedad específica de un objeto requiere conocer la clave de propiedad exacta. Sin embargo, a veces puede ser conveniente seleccionar una propiedad aleatoria de un objeto.

Un enfoque común implica iterar sobre las propiedades del objeto, contarlas y luego generar un número entero aleatorio dentro de ese rango. Con este enfoque, iterarías sobre el objeto una vez para determinar la longitud y luego iterarías nuevamente para encontrar la propiedad aleatoria en ese índice.

Sin embargo, existe una forma más concisa y, a menudo, más rápida de lograr este objetivo:

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

Este enfoque utiliza el método Object.keys(), que devuelve una matriz de todas las claves de propiedad del objeto. Al multiplicar la longitud de esta matriz por un valor aleatorio menor que 1 (usando desplazamiento de bits), obtenemos un índice aleatorio dentro de la matriz. La indexación en la matriz con este índice aleatorio proporciona la clave de propiedad seleccionada. Finalmente, al acceder al objeto usando esta clave se recupera el valor de la propiedad asociada.

Este método es más conciso y a menudo funciona más rápido que los enfoques iterativos, lo que lo convierte en la opción preferida para seleccionar una propiedad aleatoria de un objeto JavaScript.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3