nicht auf diese Weise, dass für das spezifische Objekt aussehen würden Sie im Vorbeigehen sind, die nicht in der Gruppe ist.
Wenn Ihr Ausgangspunkt ein Array von Objekten ist, brauchen Sie nicht ein Set
überhaupt, nur Array.prototype.find
:
let myObjects = [{"name":"a", "value":0}, {"name":"b", "value":1},{"name":"c", "value":2}];
let found = myObjects.find(e => e.name === "a");
console.log(found);
Wenn Sie bereits ein Set
haben und suchen möchten Für eine Übereinstimmung können Sie ihren Iterator verwenden, entweder direkt über for-of
:
let myObjects = [{"name":"a", "value":0}, {"name":"b", "value":1},{"name":"c", "value":2}];
let mySet = new Set(myObjects);
let found = undefined; // the `= undefined` is just for emphasis; that's the default value it would have without an initializer
for (const e of mySet) {
if (e.name === "a") {
found = e;
break;
}
}
console.log(found);
... oder indirekt über Array.from
(wieder) schaffen (die) ein Array, und verwenden Sie dann find
:
let myObjects = [{"name":"a", "value":0}, {"name":"b", "value":1},{"name":"c", "value":2}];
let mySet = new Set(myObjects);
let found = Array.from(mySet).find(e => e.name === "a");
console.log(found);
Wenn es etwas ist, Sie müssen Sie oft tun, können Sie sich selbst eine Dienstprogrammfunktion dafür geben:
const setFind = (set, cb) => {
for (const e of set) {
if (cb(e)) {
return e;
}
}
return undefined; // undefined` just for emphasis, `return;`
// would do effectively th same thing, as
// indeed would just not having a `return`
// at at all
}
let myObjects = [{"name":"a", "value":0}, {"name":"b", "value":1},{"name":"c", "value":2}];
let mySet = new Set(myObjects);
let found = setFind(mySet, e => e.name === "a");
console.log(found);
Sie auch, dass setzen könnte auf Set.prototype
(was sicher, dass es nicht-zählbare), aber hüte dich vor mit zukünftigen Erweiterungen Set
Konflikt (zum Beispiel würde ich überhaupt sein nicht überrascht wenn Set.prototype
eine find
Methode irgendwann bekommen).
Vielen Dank für Ihre Antwort, meine Frage war einfach aus Neugier, wie ich irgendwo gelesen, dass in einem 'Set' Suche Objekt hat eine Komplexität von O (1). –
* Prüfen, ob etw drin ist *! == * Suchen * –
@Jonasw: True! Alexandre, wenn du nur ein boolsches Ergebnis willst, benutze 'some' statt' find' oben (und passe die 'for-of' entsprechend an). –