求10种逻辑不同的JavaScript函数实现:f(1)返回-1,f(-1)返回1
实现10种逻辑不同的JavaScript函数:输入1返回-1,输入-1返回1
以下是满足要求的10种逻辑不同的实现,每种基于不同的编程思路:
// Implement 10 different ways for f(1) and f(-1) to return -1 and 1 respectively // Note: The implementation should have logical difference. Sytactical difference will not be considered as a solution // input can be either 1 or -1 // 1. 乘法取反 function f1(input) { return input * -1; } console.log(f1(1)); // -1 console.log(f1(-1)); // 1 // 2. if-else分支判断 function f2(input) { if (input === 1) return -1; else if (input === -1) return 1; } console.log(f2(1)); // -1 console.log(f2(-1)); // 1 // 3. 数组索引匹配 function f3(input) { const arr = [null, -1]; return arr.indexOf(input); } console.log(f3(1)); // -1 console.log(f3(-1)); // 1 // 4. 减法运算反转数值 function f4(input) { return 0 - input; } console.log(f4(1)); // -1 console.log(f4(-1)); // 1 // 5. 除法运算反转符号 function f5(input) { return -1 / input; } console.log(f5(1)); // -1 console.log(f5(-1)); // 1 // 6. 对象键值映射查找 function f6(input) { const map = { 1: -1, '-1': 1 }; return map[input]; } console.log(f6(1)); // -1 console.log(f6(-1)); // 1 // 7. 位运算补码取反 function f7(input) { return ~input + 1; } console.log(f7(1)); // -1 console.log(f7(-1)); // 1 // 8. switch分支匹配 function f8(input) { switch(input) { case 1: return -1; case -1: return 1; } } console.log(f8(1)); // -1 console.log(f8(-1)); // 1 // 9. 逻辑短路求值 function f9(input) { return input === 1 && -1 || 1; } console.log(f9(1)); // -1 console.log(f9(-1)); // 1 // 10. 字符串拼接转数字 function f10(input) { return Number(`-${input}`); } console.log(f10(1)); // -1 console.log(f10(-1)); // 1
逻辑差异说明
- f1:基于算术乘法的直接取反逻辑
- f2:基于多分支if-else的条件判断
- f3:基于数组
indexOf方法的索引匹配逻辑 - f4:通过减法运算实现数值反转
- f5:通过除法运算实现符号反转
- f6:基于对象键值对的映射查找逻辑
- f7:基于二进制补码的位运算取反逻辑
- f8:基于switch语句的分支匹配逻辑
- f9:基于逻辑与或的短路求值逻辑
- f10:通过字符串拼接后类型转换实现反转
内容的提问来源于stack exchange,提问作者Kiran Dash
相关产品推荐
相关产品推荐

