這裏是一個plunker去的答案:http://plnkr.co/edit/x6stJnXzWzwY197csTHB?p=preview
如果你有項目的數組。第一個元素始終位於0
位置,最後一個元素位於array.length-1
位置。添加一個元素的數組很簡單,只要
arr.push("January");
比方說你有一個數組一堆東西,你不想被固定的金額通過它循環。不一定是1,也許是4.當你通過數組的末尾時,你也想回來。
第一個問題是數組是一個固定長度,並且您的循環數(偏移量)可能會超出數組的長度。
解決的辦法是使用模數運算符%
,它在分割後返回餘數。
這意味着((current)+offset)%lengthOfArray
將返回正確的位置。
Array.prototype.move = function(i) {
this.current = (this.current + i) % this.length;
return this[this.current];
};
在你引用的問題上標記爲正確的答案有一個很大的缺陷。
Array.prototype.current = 0;
表示所有陣列將共享相同的電流值。這將是更好的聲明是這樣的數組:
var arr = []; //Creates an array
arr.current = 0;
完整的源代碼:
Array.prototype.move = function(i) {
this.current = (this.current + i) % this.length;
return this[this.current];
};
var arr = []; //Creates an array
arr.current = 0; // Better than overriding array constructor
arr.push("January");
arr.push("February");
arr.push("March");
arr.push("April");
arr.push("May");
arr.push("June");
arr.push("July");
arr.push("August");
arr.push("September");
arr.push("October");
arr.push("November");
arr.push("December");
console.log(arr.move(1));
console.log(arr.move(1));
console.log(arr.move(1));
console.log(arr.move(1));
console.log(arr.move(4));
console.log(arr.move(12));
有在JavaScript沒有關聯數組...陣列就沒有索引鍵。我不認爲你知道顯示的數組有'length = 13'。請詳細說明使用 – charlietfl
澄清charlietf。創建arr [2]時,會隱式創建arr [0]和arr [1]。 –
傳遞一個參數:'... prototype.next = function(x){...}',並設置'this.current = x'。在現實生活中,你還要檢查'x'確實是給出了等。 – Teemu