Angenommen, Sie haben ein Javascript-Objekt wie {'cat': 'meow', 'dog': 'woof' ...}. Gibt es eine präzisere Möglichkeit, eine zufällige Eigenschaft aus dem Objekt auszuwählen, als diese langwierige Methode, die ich mir ausgedacht habe? ::
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;
}
}
}
javascript
Bemmu
quelle
quelle
Antworten:
Die gewählte Antwort wird gut funktionieren. Diese Antwort wird jedoch schneller ausgeführt:
quelle
Math.random()
eine Zahl im Bereich [0,1] zurück.Auswählen eines zufälligen Elements aus einem Stream
quelle
Ich fand keines der Beispiele verwirrend genug, daher ist hier ein wirklich schwer zu lesendes Beispiel, das dasselbe tut.
Bearbeiten: Sie sollten dies wahrscheinlich nicht tun, es sei denn, Sie möchten, dass Ihre Mitarbeiter Sie hassen.
Erläuterung:
Lange Hand, weniger verwirrend:
quelle
Sie können einfach eine Reihe von Schlüsseln erstellen, während Sie durch das Objekt gehen.
Wählen Sie dann zufällig ein Element aus den Tasten aus:
quelle
var keys = Object.keys(obj)
<< 0
auf eine Ganzzahl führt zu nichts.parseInt()
wird den gleichen Job machen. Hier gibt es also nichts zu lernen, außer weniger verständlichen Code zu schreiben.Wenn Sie in der Lage sind, Bibliotheken zu verwenden, finden Sie möglicherweise, dass die Lo-Dash JS-Bibliothek viele sehr nützliche Methoden für solche Fälle bietet. In diesem Fall überprüfen Sie dies
_.sample()
.(Hinweis Die Lo-Dash-Konvention benennt das Bibliotheksobjekt _. Vergessen Sie nicht, die Installation auf derselben Seite zu überprüfen, um es für Ihr Projekt einzurichten.)
In Ihrem Fall verwenden Sie:
quelle
Wenn Sie underscore.js verwenden , können Sie Folgendes tun:
Extra:
Wenn Sie mehrere zufällige Eigenschaften benötigen, fügen Sie eine Zahl hinzu:
Wenn Sie ein neues Objekt mit nur diesen zufälligen Eigenschaften benötigen:
quelle
Eine andere einfache Möglichkeit, dies zu tun, wäre das Definieren einer Funktion, die eine Funktion anwendet
Math.random()
.Diese Funktion gibt eine zufällige Ganzzahl zurück, die von 'min' reicht.
Extrahieren Sie dann jedes Mal, wenn Sie die obige Funktion als Parameter angeben, entweder einen 'Schlüssel' oder einen 'Wert' oder 'beides' aus Ihrem Javascript-Objekt.
quelle
getRandomArbitrary
würde jede Instanz der Funktion bei jedem Aufruf eine neue Zufallszahl generieren.In einem JSON-Objekt müssen Sie Folgendes platzieren:
Diese Funktion gibt das Innere einer zufälligen Eigenschaft zurück.
quelle
Mit dem folgenden Code können Sie eine zufällige Eigenschaft aus einem JavaScript-Objekt auswählen:
quelle