2017-10-04 5 views
1

La raison de ce problème est de vérifier si un mot contient des lettres en double. L'approche que je voulais prendre était:Lorsque vous créez un nouvel ensemble en Javascript, parcourez-vous?

var word = "will" 
var x = new Set(word) 

if(x.size == word.length){ 
    console.log("no duplicates") 
}else{ 
    console.log("duplicates") 
} 

Je sais que lorsque vous créez un ensemble, la valeur ne peut apparaître qu'une seule fois. Essayer de déterminer si c'était une approche efficace Je ne suis pas sûr si quand vous créez un ensemble s'il itère ou utilise-t-il une sorte de table de hachage.

+0

Définition des objets sont des collections de valeurs linguistiques ECMAScript. Une valeur distincte ne peut apparaître qu'une seule fois en tant qu'élément de la collection d'un ensemble. Les valeurs distinctes sont discriminées en utilisant l'algorithme de comparaison [SameValueZero] (https://tc39.github.io/ecma262/#sec-samevaluezero). [source] (https://tc39.github.io/ecma262/#sec-set-objects) –

+0

Qu'est-ce que vous voulez ?. Comme ce qui précède ne va pas vérifier les «lettres» en double, «approche efficace» si correctement utilisé, oui. – Keith

+0

Est-ce que vous demandez simplement si l'insertion de 'word' dans un Set entraîne l'itération du mot? – Carcigenicate

Répondre

1

Si vous êtes inquiet au sujet de la performance, je recommanderais d'utiliser jsPerf et de comparer d'autres façons de le faire auxquelles vous avez peut-être déjà pensé. Essayez d'utiliser votre scénario spécifique, car cela peut dépendre du moteur qui exécute le code et du scénario réel en cours d'exécution.

prendre cela comme un exemple https://jsperf.com/dedupe-a-list

+0

oui cela semble répondre à ma question. Je ne savais pas s'il m'aurait été plus facile de créer une méthode de filtrage. Je me suis demandé quelle aurait été l'approche la plus efficace. Je vous remercie – user8720880