1
如何正確限定我的startA變量,以便它是我向結果數組推送的第一個數組?變量在按入陣列時沒有保持正確的數組
正如你可以從我的輸出結果看到的,我推入到結果數組中的第一個數組實際上是我的結束數組。
這是一個變量範圍問題?因爲,我已經預先定義啓動市場變量保持初始起始值([1,1]),爲什麼我啓動市場變量的輸出仍是[7,7]這不是一個按值複製,因爲它是一個原始類型而不是引用類型?
// Tick Toward
function tickToward(start, end) {
var startA = start;
var results = [];
results.push(startA);
for (var i = 0; i < start.length; i++) {
if (start[i] < end[i] && start[i + 1] < end[i + 1]) {
start[i] += 1;
start[i + 1] += 1;
var a = [start[i],start[i+1]];
results.push(a);
// console.log("Condition 1");
i--;
} else if (start[i] > end[i] && start[i + 1] > end[i + 1]) {
start[i] -= 1;
start[i + 1] -= 1;
var b = [start[i],start[i+1]];
results.push(b);
// console.log("Condition 2");
i--;
} else if (start[i] > end[i] && start[i + 1] < end[i + 1]) {
start[i] -= 1;
start[i + 1] += 1;
var c = [start[i],start[i+1]];
results.push(c);
// console.log("Condition 3");
i--;
} else if (start[i] < end[i] && start[i + 1] > end[i + 1]) {
start[i] += 1;
start[i + 1] -= 1;
var d = [start[i],start[i+1]];
results.push(d);
// console.log("Condition 4");
i--;
} else if (start[i] > end[i] && start[i + 1] == end[i + 1]) {
start[i] -= 1;
var e = [start[i],start[i+1]];
results.push(e);
// console.log("Condition 5");
i--;
} else if (start[i] < end[i] && start[i + 1] == end[i + 1]) {
start[i] += 1;
var f = [start[i],start[i+1]];
results.push(f);
// console.log("Condition 6");
i--;
} else if (start[i] == end[i] && start[i + 1] > end[i + 1]) {
start[i + 1] -= 1;
var g = [start[i],start[i+1]];
results.push(g);
// console.log("Condition 7");
i--;
} else if (start[i] == end[i] && start[i + 1] < end[i + 1]) {
start[i + 1] += 1;
var h = [start[i],start[i+1]];
results.push(h);
// console.log("Condition 8");
i--;
}
} console.log(results);
}
tickToward([1, 1], [7, 7]); // Output should be [ [ 1, 1 ], [ 2, 2 ], [ 3, 3 ], [ 4, 4 ], [ 5, 5 ], [ 6, 6 ], [ 7, 7 ] ]
// However, my output is [ [ 7, 7 ], [ 2, 2 ], [ 3, 3 ], [ 4, 4 ], [ 5, 5 ], [ 6, 6 ], [ 7, 7 ] ]
這裏的問題,如果有人有興趣: http://i.stack.imgur.com/5UR5T.png
謝謝。看起來像數組是一個複雜的類型,它是參考類型。我假設它是一種原始類型。 – cusX