社区首页 >问答首页 >将Javascript数组项转换为数字

将Javascript数组项转换为数字
EN

Stack Overflow用户
提问于 2017-07-04 19:56:26
回答 2查看 55关注 0票数 0

我已经编写了一个程序来对用户输入的数字进行排序。问题是,当我插入一个空格时,它会以数字0的形式存储在数组中。我试着设置了几个条件来防止这种情况发生,但似乎都没有效果。有什么解决方案吗?下面是我的代码中的一小段,我认为错误发生的地方以及应该设置某种条件的地方:stringArray = userInput.value.split(' '); numArray = stringArray.map(Number);

EN

回答 2

Stack Overflow用户

发布于 2017-07-04 20:03:51

由于Javascript的本质是弱类型语言,所以每次当您将值映射到代码中并将其强制为数字时,JS都会尝试将其转换为兼容的类型。因此,空格被转换为0。

在这种情况下,您可以做多件事。最简单的方法是在映射之前去掉任何空格。

我建议在映射之前过滤数组,例如:

代码语言:javascript
代码运行次数:0
复制
stringArray.filter(function(value) {
  return value.trim() !== '';
}).map(Number);

另一个想法是按照评论中的建议,使用RegExp ;)

票数 0
EN

Stack Overflow用户

发布于 2017-07-04 20:08:35

代码语言:javascript
代码运行次数:0
复制
var numArray= stringArray.map(n=>parseInt(n,10));

只需使用parseInt,它更严格(在本例中返回NaN ),您可以过滤.So:

代码语言:javascript
代码运行次数:0
复制
numArray=numArray.filter(e=>!isNaN(e));
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44913280

复制
相关文章
将tensor转换为图像_tensor转int
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
11.4K0
怎样将IP地址转换为数字
首先我们选择一个IP地址,这里我找了一个,PING一下,是通的。好就用这个IP地址做测试吧。
似水的流年
2019/12/08
2.7K0
char转换为数字_char字符转int
刷题遇到一个考点是 char型数字 转 int 进行计算的问题。一看就会,一做就错,显然是在这里的认识薄弱了。将一番搜索的结果记录下来,以备再忘来打脸。
全栈程序员站长
2022/11/10
4.1K0
JavaSE-将字符串转换为数字
提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。
程序员阿杜
2021/03/15
2.5K0
JavaSE-将字符串转换为数字
JavaScript SheetJS将 Html 表转换为 Excel 文件
在本教程中,我们可以在客户端从我们的 HTML 表数据创建一个 excel 文件。即使用javascript将HTML 表导出到Excel (.xlsx)。
全栈程序员站长
2022/09/09
5.4K0
JavaSE-将字符串转换为数字
提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。
程序员阿杜
2021/04/07
2.4K0
LeetCode 405. 数字转换为十六进制数
给定一个整数,编写一个算法将这个数转换为十六进制数。 对于负整数,我们通常使用 补码运算 方法。
Michael阿明
2020/07/13
5790
C语言中把数字转换为字符串 【转】
在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。 sprintf 是个变参函数,定义如下: int sprintf( char *buffer, const char *format [, argument] ... ); 除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数: 格式化字符串上。 printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要 的字符串。 格式化数字字符串 sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代 itoa。 如: //把整数123 打印成一个字符串保存在s 中。 sprintf(s, "%d", 123); //产生"123" 可以指定宽度,不足的左边补空格: sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567" 当然也可以左对齐: sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567" 也可以按照16 进制打印: sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐 sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐 这样,一个整数的16 进制字符串就很容易得到,但我们在打印16 进制内容时,通常想要一种左边补0 的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0 就可以了。 sprintf(s, "%08X", 4567); //产生:"000011D7" 上面以”%d”进行的10 进制打印同样也可以使用这种左边补0 的方式。 这里要注意一个符号扩展的问题:比如,假如我们想打印短整数(short)-1 的内存16 进制表示形式,在Win32 平台上,一个short 型占2 个字节,所以我们自然希望用4 个16 进制数字来打印它: short si = -1; sprintf(s, "%04X", si); 产 生“FFFFFFFF”,怎么回事?因为spritnf 是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来的到底 是个4 字节的整数还是个2 字节的短整数,所以采取了统一4 字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32 位的整数-1,打印时4 个位置不够了,就把32 位整数-1 的8 位16 进制都打印出来了。 如果你想看si 的本来面目,那么就应该让编译器做0 扩展而不是符号扩展(扩展时二进制左边补0 而不是补符号位): sprintf(s, "%04X", (unsigned short)si); 就可以了。或者: unsigned short si = -1; sprintf(s, "%04X", si); sprintf 和printf 还可以按8 进制打印整数字符串,使用”%o”。注意8 进制和16 进制都不会打 印出负数,都是无符号的,实际上也就是变量的内部编码的直接的16 进制或8 进制表示。 控制浮点数打印格式 浮点数的打印和格式控制是sprintf 的又一大常用功能,浮点数使用格式符”%f”控制,默认保 留小数点后6 位数字,比如: sprintf(s, "%f", 3.1415926); //产生"3.141593" 但有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:”%m.nf”格式,其中m 表 示打印的宽度,n 表示小数点后的位数。比如: sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142" sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 " sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142" 注意一个问题,你猜 int i = 100; sprintf(s, "%.2f", i); 会打出什么东东来?“100.00”?对吗?自己试试就知道了,同时也试试下面这个: sprintf(s, "%.2f", (double)i); 第 一个打出来的肯定不是正确结果,原因跟前面提到的一样,参数压栈时调用者并不知道跟i相对应
用户2038589
2018/09/06
16.8K0
java map 转string_java-将Map <String,Object>转换为Map <String,String>
Map map = new HashMap(); //Object is containing String
全栈程序员站长
2022/08/25
12.3K0
Birdge.NET:将C#代码转换为JavaScript
Birdge.NET 是一个可以将C#代码转换为JavaScript的开源编译器,由 Object.NET于2015年5月推出。它允许开发者使用C#编写平台独立的移动、Web和桌面应用,并运行在iOS、Windows、Mac、Linux及其它任意支持JavaScript的设备上。 Birdge.NET的最新版本是 2015年8月17日发布的1.8版本 。该版本的一项特性是 支持多平台操作系统 。这一特性可以让 Birdge.NET 本身运行在多个平台上。目前,Birdge.NET可以运行在Windows、L
逸鹏
2018/04/09
3.3K0
javascript实现数字转大写金额的函数
<SCRIPT type="text/javascript" Charset="GB2312"> function convertCurrency(currencyDigits) { // Constants: var MAXIMUM_NUMBER = 99999999999.99; // Predefine the radix characters and currency symbols for output: var CN_ZERO = "零"; var CN_ONE = "壹"; va
菩提树下的杨过
2018/01/22
1.6K0
Javascript数组如何在指定位置插入数组项
splice是数组中常见用来插入指定位置的方法,熟练掌握数组的方法可以从一方面反映前端js的熟练程度,大家一起加油↖(^ω^)↗。
IT工作者
2021/12/28
1.6K0
如何用python将中文日期转换为数字日期 | 答疑
大家好,这篇文章是在交流群的群友解疑过程中诞生的。 没想到黄同学在帮助群友后还记录了下来,所以就把这篇文章发出来。 问题 他有一个需求,就是对于日期的录入都是中文形式的,需要转换为数字形式的。 由于
朱小五
2020/03/09
3.1K0
Js/JQuery将金额数字转换为中文万、亿结尾
JavaScript代码 function addChineseUnit (number, decimalDigit) { var temp1 = number.toString(); var temp2 = ''; if(temp1.substring(0, 1) === "-"){ number = Number(number.toString().substring(1)); temp2 = '-'; } decimalDig
目的地-Destination
2023/03/06
1.5K0
​LeetCode刷题实战405:数字转换为十六进制数
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/10/21
5000
Go将数字转换为字符串的正确姿势
在许多语言中,你可以轻松地将任何数据类型转换为字符串,只需将其与字符串连接,或者使用类型转换表达式即可。但是,如果你在Go中尝试执行似乎很明显的操作(例如将int转换为字符串),你不太可能获得预期的效果。
KevinYan
2019/10/15
6K0
使用PHP将数字金额转中文繁体大写
<?php if (!function_exists('rmb_capital')) { /** * 金额转中文大写 * * @param mixed $
友儿
2022/09/11
2K0
点击加载更多

相似问题

将数字替换为空格数

43

将ipv6转换为数字

612

将0转换为0.00作为数字

10

将VARCHAR2转换为数字

42

将datetime64转换为数字

1113
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档