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删除(并返回)最后一个元素。这会影响数组的长度。每次迭代都会检查长度,所以由于数组每次都变短,所以循环会提前结束。
您可以创建一个循环并弹出项目,直到它为空,但需要考虑的另一件事是,它是您正在更改的原始数组。我认为像reverseArray
这样的函数如果返回另一个,就不应该改变传递给它的数组numbers
。因此,一个更好的解决方案是一个简单的循环,它在不修改数组的情况下迭代所有项。
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++)
- 复制值而不修改原始数组
当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;
}
对相同的输出使用以下方法
函数reverseArray(array){
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));
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- javascript新手,使用数组
- Rock Paper Scissor Javascript使用数组?新手
- 新手多维数组加法困境
- 为什么我在 Javascript 中最长的数组值函数不起作用?新手请帮忙
- Code Academy JavaScript数组-我可以'我不明白为什么这个代码不正确(新手)
- 为新手准备的XML文件到Javascript数组
- 数组语法错误,新手
- 关于理解for循环+数组的JavaScript新手
- 从一个新手的JavaScript数组的困难