Heim >Web-Frontend >js-Tutorial >Wie kann ich eine zufällige Eigenschaft effizient von einem JavaScript-Objekt abrufen?

Wie kann ich eine zufällige Eigenschaft effizient von einem JavaScript-Objekt abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 01:07:02922Durchsuche

How to Efficiently Retrieve a Random Property from a JavaScript Object?

Eine zufällige Objekteigenschaft mit erhöhter Effizienz abrufen

Angenommen, Sie stoßen in Javascript auf ein Objekt, das diesem ähnelt:

{cat: 'meow', dog: 'woof', snake: 'hiss'}

Möglicherweise möchten Sie eine zufällige Eigenschaft von diesem Objekt erhalten. Anstatt eine langwierige Methode wie die folgende zu verwenden:

function pickRandomProperty(obj) {
    var prop, len = 0, randomPos, pos = 0;
    for (prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            len += 1;
        }
    }
    randomPos = Math.floor(Math.random() * len);
    for (prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            if (pos === randomPos) {
                return prop;
            }
            pos += 1;
        }
    }       
}

Erwägen Sie die Nutzung dieses optimierten Ansatzes:

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

Diese Technik optimiert Leistungsverbesserungen durch Nutzung der Object.keys()-Methode Rufen Sie ein Array der Schlüssel des Objekts ab. Anschließend wird die Länge des Arrays mit einer Zufallszahl multipliziert, um einen Index für das Array zum Abrufen des Schlüssels zu erhalten. Schließlich greift es auf die entsprechende Eigenschaft im Objekt zu, um die gewünschte Zufallseigenschaft zurückzugeben.

Das obige ist der detaillierte Inhalt vonWie kann ich eine zufällige Eigenschaft effizient von einem JavaScript-Objekt abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn