首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaScript中缩短这种类型安全添加的提示

问在JavaScript中缩短这种类型安全添加的提示
EN

Code Golf用户
提问于 2023-01-12 12:01:47
回答 1查看 722关注 0票数 5

考虑:

代码语言:javascript
复制
c=(a,b)=>(+a||0)+(+b||0)

是的,这样解决是不好的。但我想把它缩短得更短。如果a是字符串,b是字符串,则返回0。如果其中一个是数字,则返回它。如果两个输入都是数字,则返回和(如果任一字符串可以转换为一个数字,则将其视为一个数字)。

我试着缩短这段时间,但我做不到。

这是任务的规范:

使用

代码语言:javascript
复制
node app.js

期望行为

程序返回两个数字的和。如果没有提供数字,则结果应该是0。如果只提供一个号码,则只应返回该号码。

测试

代码语言:javascript
复制
node app.js 4 5 # 9

node app.js 4 # 4

node app.js 4 a # 4

node app.js a 4 # 4

node app.js a b # 0

node app.js # 0

更新

它还需要处理浮点数,而不仅仅是整数。

这是我当前的代码(只有第1行的代码应该被优化为尽可能小):

代码语言:javascript
复制
c=(a,b)=>(+a||0)+(+b||0)

const input1 = process.argv[2];
const input2 = process.argv[3];

const result = c(input1, input2);

console.log(result);
EN

回答 1

Code Golf用户

发布于 2023-01-12 12:17:57

如果只需要处理整数,则可以使用按位操作将其转换为数字:

代码语言:javascript
复制
c=(a,b)=>(a|0)+(b|b) // Both ways shown fine

甚至更短:

代码语言:javascript
复制
c=a=>b=>~-a-~b // (a-1)-(-b-1)

在网上试试!

这不适用于浮子,但是这个技巧似乎在其他地方没有提到,所以我把它留在这里。

票数 7
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/256644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档