0

次のコードを使用して、配列から次の配列項目を見つけています。

var srcKpi=[1,2,3,4,5,6];
var value=2;
var nextitem = srcKpi[($.inArray(value, srcKpi) + 1) % srcKpi.length];
console.log(nextitem) // 3

配列に重複する項目がない場合は正常に機能します。配列内の重複したアイテムを試してみると、最初に出現した要素のみが取得されますが、実際の要素は取得されません。特定の値の次の配列項目を取得したい。

var srcKpi=[1,2,3,1,5,6];
var value=1;
var nextitem = srcKpi[($.inArray(value, srcKpi) + 1) % srcKpi.length];
console.log(nextitem) // 2

これをループに入れて次の値を取得すると、取得するたびに2. 値「5」を取得することはありません。Array に重複するアイテムがある場合に、特定の要素の次の要素を取得するために私が間違っていることは何ですか? 詳細については: jsfiddle: http://jsfiddle.net/4LCMs/

4

1 に答える 1

0

ここで配列を実装できprototypeます。

Array.prototype.current = 0;

var Current = Array.prototype.current;
Array.prototype.next = function() {
    if (!((this.current + 1) in this)) return false;
    return this[++this.current];
};
Array.prototype.prev = function() {
    return this[--this.current];
};

var srcKpi=[1,2,3,1,5,6];
for(Current ===0;Current<srcKpi.length;Current++)
console.log(srcKpi.next());

これで、すべての Array にメソッド prev と next と、「現在の」要素を指す current プロパティが含まれます。注意: 現在のプロパティは変更される可能性があるため、予測できない結果が生じる可能性があります。

これは結果として得られるものです:

2 
3
1 
5 
6 
false 

ここで実用的なソリューションを参照してください:

http://jsbin.com/ebocoz/1/edit

run with jsブラウザ コンソールで解決策を確認してください。

prev必要に応じて、要素を見つけることもできます。

于 2013-08-15T08:45:29.063 に答える