我正在学习 Eloquent Javascript(第 4 章,练习 2:反转数组),并且只学习了几周的 Javascript。您必须为数组重新创建相反的方法。我是否以错误的方式解决这个问题?我的代码有效,这是最重要的吗?这是我的代码:
reverseArrayInPlace(arr) {
var arrLength = arr.length;
for (var i = arr.length - 1; i >= 0; i--) {
arr.push(arr[i]);
}
arr.splice(0, arrLength);
return arr;
}
这是作者写的答案:
function reverseArrayInPlace(array) {
for (var i = 0; i < Math.floor(array.length / 2); i++) {
var old = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = old;
}
return array;
}
最佳答案
不确定书中的练习器,但为了在 JavaScript 中反转数组,您可以简单地使用其 native 函数 Array.prototype.reverse()
。
let data = ["a", "b", "c", "d"];
data.reverse();
console.log(data);
关于您的算法,它与作者的算法不同,因为作者交换了数组项。
<小时/>只是为了好玩,我添加了自己的实现,我尝试使用与本书作者相同的原理使代码更易于阅读,我希望大家感兴趣:
let data = [ 1, 2, 3, 4, 5, 6];
let revert = data => {
let mid = Math.floor(data.length / 2);
let left = 0;
let right = data.length - 1;
for(; left < mid; left++, right--){
let temp = data[left];
data[left] = data[right];
data[right] = temp;
}
return data;
};
let result = revert(data);
console.log(result);
关于javascript - Eloquent JavaScript : Is my solution too much or is it just as "allowable' as the author's?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43587871/