javascript - 反向数组到位......我的实现有什么问题
问题描述
我试图就地反转一个数组,例如给定一个数组[1, 2, 3]
将其反转为[3, 2, 1]
.
这是我的实现:
function reverseInPlace(arr) {
var start = 0;
var end = arr.length + 1;
while (start > end) {
var temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
return arr;
};
reverseInPlace([1,2,3])
但是每次我运行这个,结果仍然是[1, 2, 3]
,不是[3, 2, 1]
。我想知道我的反向做错了什么。
解决方案
你有一些问题:
- 错误
end
的值,它应该是最后一个索引length - 1
, - 当检查错误时,您需要检查
start < end
,原始代码在 startfalse
,这就是得到未更改数组的原因, - 缺少 的增量
start
和减量end
。
function reverseInPlace(arr) {
let start = 0,
end = arr.length - 1;
while (start < end) {
let temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
return arr;
}
console.log(reverseInPlace([1, 2, 3]));
推荐阅读
- android - 在后台线程的磁盘上滑动缓存图像
- matlab - Matlab中带有移动平均线的蜡烛图
- meteor - 如何估算 MeteorJS 应用程序的托管成本 (AWS)?
- node.js - TypeScript 未访问或导入节点模块
- php - AJAX 使用 Codeigniter 返回 ERR_CONTENT_DECODING_FAILED 200
- php - 如何在 laravel 中以编辑形式显示时间戳格式?
- php - 我的要求声明调用 phpmailer 有什么问题?
- python - PyAudio 安装问题
- jquery - Angular JQuery DataTable,延迟搜索直到输入多个字符
- java - 方法没有使用正确的解析输入