javascript 的新手,使用数组
new to javascript, working with arrays
想知道为什么我需要将数组长度加 4 才能反向打印出整个数组?
在我添加 4 之前,它只是使用 .length 属性 并且它只打印出 6543。
提前致谢!
function reverseArray(array) {
var newArray =[];
for(var i = 0; i <= array.length+4; i++) {
newArray += array.pop(i);
}
return newArray;
}
var numbers = [1,2,3,4,5,6];
console.log(reverseArray(numbers));
array.pop 删除(和 returns)最后一个元素。这会影响数组的长度。每次迭代都会检查长度,因此由于数组每次都变短,因此循环提前结束。
您可以创建一个循环并弹出项目直到它为空,但要考虑的另一件事是,它是您要更改的原始 数组。我认为像 reverseArray
这样的函数不应该改变传递给它的数组 numbers
如果它 returns 另一个。所以更好的解决方案是一个简单的循环,它在不修改数组的情况下迭代所有项目。
function reverseArray(array)
{
var newArray =[];
for (var i = array.length-1; i >= 0; i--) {
newArray.push(array[i]);
}
return newArray;
}
var numbers = [1,2,3,4,5,6];
console.log(reverseArray(numbers));
console.log(numbers); // Should be unaltered.
如果不介意修改数组,可以使用数组的reverse()
方法:
var numbers = [1,2,3,4,5,6];
numbers.reverse();
console.log(numbers);
在Javascript中,pop总是删除数组的最后一个元素。这缩短了长度,意味着 i
和 array.length
正在收敛。
您可以采取一些措施来避免这种行为:
- 开始循环时存储原始长度:
for (var i = 0 , l = array.length; i < l; i++)
- 复制值而不修改原始数组
对相同的输出使用以下方法
函数reverseArray(数组)
{
var newArray =[];
var j = array.length-1;
for(var i = 0; i < array.length; i++)
{
newArray[j]= array[i]; j--;
}
return newArray;
}
var numbers = [1,2,3,4,5,6];
console.log(reverseArray(numbers));
当您 pop
数组中的项目时,该项目将从数组中删除。当你增加计数器并减少长度时,它们会在中途相遇,所以你只得到一半的项目。
使用push
将项目放入结果中。如果你使用 +=
它将产生一个字符串而不是一个数组。
如果您使用 pop
,那么您可以在数组中还剩下任何项目时循环:
function reverseArray(array) {
var newArray = [];
while (array.length > 0) {
newArray.push(array.pop());
}
return newArray;
}
您可以通过向后循环并向新数组添加项目来保持原始数组不变:
function reverseArray(array) {
var newArray = [];
for (var i = array.length - 1; i >= 0; i--) {
newArray.push(array[i]);
}
return newArray;
}
想知道为什么我需要将数组长度加 4 才能反向打印出整个数组?
在我添加 4 之前,它只是使用 .length 属性 并且它只打印出 6543。
提前致谢!
function reverseArray(array) {
var newArray =[];
for(var i = 0; i <= array.length+4; i++) {
newArray += array.pop(i);
}
return newArray;
}
var numbers = [1,2,3,4,5,6];
console.log(reverseArray(numbers));
array.pop 删除(和 returns)最后一个元素。这会影响数组的长度。每次迭代都会检查长度,因此由于数组每次都变短,因此循环提前结束。
您可以创建一个循环并弹出项目直到它为空,但要考虑的另一件事是,它是您要更改的原始 数组。我认为像 reverseArray
这样的函数不应该改变传递给它的数组 numbers
如果它 returns 另一个。所以更好的解决方案是一个简单的循环,它在不修改数组的情况下迭代所有项目。
function reverseArray(array)
{
var newArray =[];
for (var i = array.length-1; i >= 0; i--) {
newArray.push(array[i]);
}
return newArray;
}
var numbers = [1,2,3,4,5,6];
console.log(reverseArray(numbers));
console.log(numbers); // Should be unaltered.
如果不介意修改数组,可以使用数组的reverse()
方法:
var numbers = [1,2,3,4,5,6];
numbers.reverse();
console.log(numbers);
在Javascript中,pop总是删除数组的最后一个元素。这缩短了长度,意味着 i
和 array.length
正在收敛。
您可以采取一些措施来避免这种行为:
- 开始循环时存储原始长度:
for (var i = 0 , l = array.length; i < l; i++)
- 复制值而不修改原始数组
对相同的输出使用以下方法
函数reverseArray(数组) {
var newArray =[];
var j = array.length-1;
for(var i = 0; i < array.length; i++)
{
newArray[j]= array[i]; j--;
}
return newArray;
}
var numbers = [1,2,3,4,5,6];
console.log(reverseArray(numbers));
当您 pop
数组中的项目时,该项目将从数组中删除。当你增加计数器并减少长度时,它们会在中途相遇,所以你只得到一半的项目。
使用push
将项目放入结果中。如果你使用 +=
它将产生一个字符串而不是一个数组。
如果您使用 pop
,那么您可以在数组中还剩下任何项目时循环:
function reverseArray(array) {
var newArray = [];
while (array.length > 0) {
newArray.push(array.pop());
}
return newArray;
}
您可以通过向后循环并向新数组添加项目来保持原始数组不变:
function reverseArray(array) {
var newArray = [];
for (var i = array.length - 1; i >= 0; i--) {
newArray.push(array[i]);
}
return newArray;
}