javascript - Eloquent JavaScript : Is my solution too much or is it just as "allowable' as the author's?

标签 javascript

我正在学习 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()

More info can be found here .

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/

相关文章:

javascript - MVC 区域的 Angular JS 路由问题

javascript - 如何修复 Vim 中不正确的内联 Javascript 缩进?

javascript - CKEditor 工具栏配置不起作用

javascript - Dojo require,模块加载失败时连接报错

javascript - 修改数据时setState不会触发重新渲染

javascript - 使用@触发自动完成

javascript - Coffeescript 将文本文件的内容加载到字符串变量中

javascript - 绑定(bind)和解绑函数

javascript - typescript 2.1 with async/await 为 angularjs 生成 ES5/ES3 目标

Javascript 陷阱 : Why value does not increment?