我有以下代码,以根据索引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
?
只需在if块中将"myObject"替换为"return"即可.
只是为了好玩,这是一个完全不可读的方法:
return { first: x[0], second: (x[1]+1) - (x[1] == 2) - 2*(x[1] == 3), third: x[2] };
更严重的是,您可能会将"第二个"的逻辑本身作为一个非常小的函数,并调用该函数.
但是你应该组成两个函数:一个用于重命名键,另一个用于应用偏移量second
.