Javascript でアイテムのインデックスを取得する 質問する

Javascript でアイテムのインデックスを取得する 質問する

この質問の類似品を見つけるのは困難ですが、以前にも質問されたことがあると思います...

に 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

おすすめ記事