私は配列を持っていて、その配列のサブ配列を反復処理する関数があるとします。さらに、サブアレイが配列の終わりを超えてインデックスを含む場合、サブアレイは配列の最初のインデックスで再開する。配列の長さが50で、インデックスは0から始まり、特に配列インデックスが任意の終点と始点の間にあるかどうかをテストするには?
48 49 0 1 ...
場合
例えば、私は最後から先頭に取得するためにはJavaScriptの剰余演算子を使用しています。 array[i%array.length]
。
これは私に必要なインデックスの連続セットを取得しますが、インデックス値に基づいていくつかのフィルタリングを行いたいと思っています。たとえば、48と1の間のインデックスのみを保持する。終わりを除いて、開始のために含めてください。
私がやっていたことは、単にitem.index >= idx && item.index < end
のような条件でフィルタリングしていましたが、これは明らかに配列の先頭と最後では機能しません。
タイトルが示すように、特定のインデックスまたはインデックスのセットがこれらのポイントの間にあるかどうかを効率的にチェックするにはどうすればよいですか?
この質問の目的のために、開始点は両端を含み、終了点は排他的です。
編集:downvotesに応答して、私は質問を明確にし、いくつかのスニペットを追加しました。私は、簡潔さのために問題の各詳細を省略しています。
次の2つの他の要素の間にある要素とはどういう意味ですか? – nicael
どのような状態であれ、どの点も他の点の間にあります。なぜなら、それぞれの点が後で再び来るからです。 –
これは無限ループを作成しませんか?おそらく、なぜこれが必要なのか説明する必要があります。 – 4castle