我最近在一次采访中遇到一个问题,并为如何解决而感到困惑。我将非常感谢您的协助。
该问题要求我创建一个函数,该函数接收一个数字作为参数(599),并返回一个不同的数字,但也可以反向进行。问题是我不允许使用任何类型的条件运算符,例如if
,switch
等...
据我所知:
function changeValue(v) {
// return 599 if 395 passed and vice versa
}
答案 0 :(得分:6)
使用对象
function changeValue(v) {
const obj = {'395': 599, '599': 395};
return obj[v];
}
console.log(changeValue(395));
console.log(changeValue(599));
答案 1 :(得分:5)
这如何:
function changeValue(v) {
return (599 + 395) - v;
}
从编程的角度来看,这不是使用对象的解决方案,因为对象(地图/字典)更易于扩展到其他值。
答案 2 :(得分:1)
除了在对象中显式记录参数-结果对(请参阅其他答案)之外,您还可以使用f
形式的线性函数(从数学类中记住它)f(x)=mx+b
f(599)=395
和f(395)=599
。
解决这个问题得到:m = -1, b = 994
function changeValue(v) {
return 994 - v;
}
console.log(changeValue(395));
console.log(changeValue(599));