17

Javascriptでアイテムの配列を4桁上にシフトするにはどうすればよいですか?

私は次の文字列配列を持っています:

var array1 = ["t0","t1","t2","t3","t4","t5"];

次の結果を得るには、「array1」を変換する関数が必要です。

// Note how "t0" moves to the fourth position for example
var array2 = ["t3","t4","t5","t0","t1","t2"];  

前もって感謝します。

4

5 に答える 5

31
array1 = array1.concat(array1.splice(0,3));

Firebugで以下を実行して確認します

var array1 = ["t0","t1","t2","t3","t4","t5"];
console.log(array1);
array1 = array1.concat(array1.splice(0,3));
console.log(array1);

結果は

["t0", "t1", "t2", "t3", "t4", "t5"]
["t3", "t4", "t5", "t0", "t1", "t2"]
于 2009-10-05T16:39:00.020 に答える
18

配列をスライスしてから、逆の順序で結合できます。

var array2 = array1.slice(3).concat(array1.slice(0, 3));
于 2009-10-05T16:35:01.823 に答える
3
function shiftArray(theArray, times) {
    // roll over when longer than length
    times = times % theArray.length;
    var newArray = theArray.slice(times);
    newArray = newArray.concat(theArray.slice(0, times));
    return newArray;
}

var array1 = ["t0","t1","t2","t3","t4","t5"];
var array2 = shiftArray(array1, 3);
alert(array2); // ["t3","t4","t5","t0","t1","t2"]
于 2009-10-05T16:43:14.693 に答える
2

もう1つの方法はこれです:

var array2 = array1.slice(0);

for (var i = 0; i < 3; i++) {
    array2.push(array2.shift());
}
于 2009-10-05T16:37:53.283 に答える
0

別の方法-次のコードを大きなFirebugコンソールに貼り付けて、機能することを確認します。

var a = [0, 1, 2, 3, 4, 5];
for (var i = 0; i < 3; i++) {
    a.unshift(a.pop());
}
// the next line is to show it in the Firebug console; variable "a" holds the array
a.toString(",");
于 2009-10-05T16:46:05.983 に答える