Due to the way you iterate, you change the value i
with i+1
and then move backward, so you assign the last value to all positions
MyShift = function(array) {
for (var i = 0; i < array.length - 1; i++) {
array[i] = array[i + 1];
};
--array.length;
};
var a = ['a', 'b', 'c'];
MyShift(a);
document.body.appendChild(document.createTextNode(a))
Run codeHide result, , i=1
, array[1] = array[2]
, [a, c, c]
, i=0
, array[0] = array[1]
, arra[1]
, [c,c,c]
MyShift = function(array) {
snippet.log('src: ' + array)
for (i = array.length - 2; i >= 0; i--) {
array[i] = array[i + 1];
snippet.log('loop ' + i + ': ' + array);
}
--array.length;
};
var a = ['a', 'b', 'c'];
MyShift(a);
snippet.log('Result: ' + a)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://tjcrowder.imtqy.com/simple-snippets-console/snippet.js"></script>
Hide result