この質問の類似品を見つけるのは困難ですが、以前にも質問されたことがあると思います...
に 3 つの項目を追加すると、次のようになりますSet
。
var s = new Set();
undefined
s.add(1); s.add(2); s.add(3);
Set(3) {1, 2, 3}
... アイテムのインデックスを確認するにはどうすればいいですか?
indexOf
メソッドはなくSet
、Set を反復処理するのが最善の方法かどうかはわかりません。API を使用しようとしましたforEach
が、この関数からでもbreak
実行できませんでした。return
if (s.size < cells.length) {
var count = 0;
s.forEach(function (value) {
if (cell.id.slice(0, -5) == value) {
break; //return fails here too...
}
count ++;
});
return count;
}
ベストアンサー1
Setsの目的は順序番号を与えることではありませんが、順序番号が必要な場合は、一時的に配列に変換して、スプレッド構文:
count = [...s].indexOf(cell.id.slice(0, -5));
何らかの理由でループを使用する場合は、some
の代わりにを使用しますforEach
。
const target = cell.id.slice(0, -5);
[...s].some(function (value) {
if (value === target) {
return true; // this will stop the iteration
}
count ++;
});
または、配列への変換を回避する ES6for of
ループを使用しないのはなぜでしょうか。配列への変換は、大きなセットの場合、興味深いオプションではありません。
const target = cell.id.slice(0, -5);
for (const value of s) {
if (value === target) {
break; // this will stop the iteration
}
count ++;
}
注意: 配列では古いスタイルのfor ... in
ループの使用は推奨されませんが、ループではそうではありませんfor ... of
。