2-9哪出问题了
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数组反转</title>
</head>
<body>
<script>
function arrReverse(arr){
var newArr=[];
for(var i=0;i<arr.length;i++){
console.log(newArr[i]);
//补充代码
}
var arr=arr.sort(function(a,b){return b-a});
//补充代码
}
document.write(arr);
</script>
</body>
</html>
正在回答
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> function arrReverse(arr){ var newArr=[]; for(var i = 0; i < arr.length; i++){ newArr[arr.length-1-i] = arr[i]; } return newArr; } document.write(arrReverse([1,2,3,4,5,6,7,8])); </script> </body> </html>
这个是我写的2-9
分析一下问题代码,函数中先声明了一个数组newArr,然后执行for循环,i从0到参数数组arr的arr.length-1递增1,循环内部的操作是在控制台逐项输出之前声明的数组newArr,但是因为newArr只进行了声明而没有赋值,所以newArr只是一个占位符,里面并没有值,所以什么都输出不了。后边的代码又通过定义新数组的形式将arr重新赋值,最后原样输出arr。
综上,错误有3处:1.题目中给定的newArr没有正确使用,直接在控制台输出了一个空数组;2.var arr=arr.sort(function(a,b){return b-a});如果想通过这个算法操作arr数组,不用加前边的var,因为arr已在函数头部声明好了;3.最后的输出并没有使用函数arrReverse呀。
2-9题目给好了的代码的意思是通过for循环把数组的顺序反转,并把反转好了的数组赋值给newArr然后返回newArr。当然你的算法arr=arr.sort(function(a,b){return b-a});可以一次性把数组反转倒是很简单奏效,但是没有使用题目中代码给定的newArr。
所以我认为正确的算法应该是遍历一次参数数组arr,把arr的第一项赋值给newArr的最后一项,arr的第二项复制给newArr的倒数第二项……以此类推,最后输出newArr。具体代码见上部分的代码区域。
如果按照你的思路来的话应该是这样写——
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>数组反转</title> </head> <body> <script> function arrReverse(arr){ arr = arr.sort(function(a, b){return b-a}); return arr; } document.write(arrReverse([1,2,3,4,5,6])); </script> </body> </html>
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36713 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星