如何將項目數組向上移動4個位置?如何在Javascript中將4個位置的項目向上移動
我有以下字符串數組:
var array1 = ["t0","t1","t2","t3","t4","t5"];
我需要一個功能轉換 「陣列1」 導致:提前
// Note how "t0" moves to the fourth position for example
var array2 = ["t3","t4","t5","t0","t1","t2"];
感謝。
如何將項目數組向上移動4個位置?如何在Javascript中將4個位置的項目向上移動
我有以下字符串數組:
var array1 = ["t0","t1","t2","t3","t4","t5"];
我需要一個功能轉換 「陣列1」 導致:提前
// Note how "t0" moves to the fourth position for example
var array2 = ["t3","t4","t5","t0","t1","t2"];
感謝。
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-05 16:46:36
as a function-'function reorderArray(arr,startIndex,howMany){return arr.concat(arr.splice(startIndex,howMany)); }''也需要錯誤檢查:) – 2009-10-05 16:51:14
請注意,Array.concat()使用源數組中的元素創建一個全新的數組。模擬小陣列,但需要考慮。 – 2013-06-25 21:02:00
這是很好,簡潔。如果你經常這樣做,並且需要以不同的數量來移動它,你可以把它放到一個函數中,並傳入一個變量來插入3的位置。 (我使用「shift」這個詞猶豫不決,因爲這是一個Javascript數組方法。) – 2009-10-05 16:44:38
是的,這是我最喜歡的答案,很好! – 2015-08-01 08:34:09
這很好,因爲它不會修改array1。 – tjklemz 2016-05-24 18:05:14
還有一個辦法是這樣的:
var array2 = array1.slice(0);
for (var i = 0; i < 3; i++) {
array2.push(array2.shift());
}
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"]
另一種方法 - 將以下代碼粘貼到大螢火蟲控制檯,以確認它的工作原理:
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-05 16:51:38
@Nathan:最終結果*是一個數組,保存在變量「a」中;將其輸出爲字符串的行用於說明目的,這就是爲什麼它沒有分配給任何東西(它直接在Firebug中的控制檯)。我會更正我的回答,說清楚我的意思是Firebug控制檯...有時我忘了它不是內置於瀏覽器;-) – NickFitz 2009-10-05 16:53:55
此旋轉時,不移位 – Peter 2009-10-05 19:59:45
不同的詞,相同的結果 – 2012-05-03 13:22:13
+1彼得B/C我認爲這是一個精度(使用正確的詞)_is_重要的情況。 Array.shift()已經定義了在JavaScript上下文中移動數組的含義。這就是說,這裏是一個用於旋轉數組的JS函數。 http://stackoverflow.com/a/1985471/740639 – 2013-06-25 20:57:37