当前位置:  开发笔记 > 编程语言 > 正文

如何在没有`var`的情况下重写这段代码?

如何解决《如何在没有`var`的情况下重写这段代码?》经验,为你挑选了1个好方法。

我有以下代码,以根据索引1处的数组元素的值返回不同的对象

const myArray = Array(1,2,3)
const myOtherArray = Array(1,3,4) 
const myThirdArray = Array(1,5,7)

// Creates object from array and prints it
let toObject = function(x){
  var myObject
  if (x[1] == 2){
     myObject = {first: x[0],
      second: x[1],
      third: x[2]
    }
  }
  else if (x[1] == 3){
     myObject = {first: x[0],
      second: x[1]-1,
      third: x[2]
    }
  }
  else {
     myObject = {first: x[0],
      second: x[1]+1,
      third: x[2]
    }
  }
  
  return myObject
}

console.log(toObject(myThirdArray))

上述实现的问题是我定义myObject并使用赋值语句.我想以"纯粹功能"的方式实现这一点,即避免可变性.在Scala或Haskell中,我想我可以使用模式匹配,但是如何在Javascript中完成此操作?是否可以在不使用的情况下实现这一点var



1> djechlin..:

只需在if块中将"myObject"替换为"return"即可.

只是为了好玩,这是一个完全不可读的方法:

return { first: x[0],
   second: (x[1]+1) - (x[1] == 2) - 2*(x[1] == 3),
   third: x[2]
};

更严重的是,您可能会将"第二个"的逻辑本身作为一个非常小的函数,并调用该函数.

但是你应该组成两个函数:一个用于重命名键,另一个用于应用偏移量second.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有