本文实例陈诉了JS中parseInt()和map()用法。分享给我们供大家仿效,具体如下:

 

parseInt()的多少个例证

率先,请允许自身抄袭一段你明白的parseInt

 

var b = parseInt("01");
alert("b="+b);
var c = parseInt("09/08/2009");
alert("c="+c);

 

JavaScript 是弱类型语言, 为了确定保障数值的得力, 在拍卖数值的时候,
大家得以对数值字符串实行强行转换. 如 parseInt 取整和 parseFloat
取浮点数.

结果:b=1,c=0

 图片 1

Java 也许有 Integer.parseInt() 方法, 不过 JavaScript 的 parseInt
处理格局与 Java 等强整型语言不太同样,
所以日常有人因为对那些情势的使用不当而博得特别重返.

parseInt()用来剖判字符串,重返整数,有多少个特点:

 

 

1.无视被分析字符串最前和尾声的空格,即:” 111 “和”111″是大同小异的

 

上面是一段 Java 代码, 用于将字符串 020 转为整型.

2.标准格式是parseInt(string,radix)。


首先个参数是被深入分析的字符串,第2个参数是进制(可不些)

以下节选自[parseInt

出口结果是 20

其次个参数的表征:

  • JavaScript |
    MDN]()

下边是一段 JavaScript 代码, 同样是将字符串 020 转为整型.

①若是radix省略或为0,则按暗许进制(十进制)进行解析

事实上你连那个基础都没调节

②radix为2~36里边的板寸,假诺在那个界定之外,重返NaN

图片 2

出口结果是 16

③string的首字符为0,则暗中认可分析为8进制。string首字符为0x(0X)则暗许分析为16进制。别的情形默以为10进制。

 

为啥吧?

不论 Java 依然 JavaScript, parseInt 方法都有五个参数,
第一个参数正是要转移的靶子, 第1个参数是进制基数, 能够是 2, 8, 10, 16,
暗中认可以 10 进制管理. 但在 JavaScript 中, 0 开始的数被以为接纳 8
进制管理, 0x 的数被认为是用 16 进制来管理. 所以上边的 JavaScript
代码总计错误了.

④最棒拉长第叁个参数,否则就是遇见首字符为0,应该以8进制方式开展,在一些浏览器下,如ff也会按10进制实行

概述

耳濡目染大啊?

大! 很大! 因为那一个常常用来计算价格, 一旦价格错误, 对客商来讲, 那是误导,
而一个好的网址不该出现这种误导客商的. 上面包车型地铁 DEMO 中, 未有一些名进制.
我们能够在数量框中输入一个以 0 初叶的数字, 在点击总结开关,
算出来的数值将比预期中的小一些, 也许小非常多 (如: 8 进制中未有 019
如此的数值, 所以数值形成了 1, 9 被忽略掉).
从不为 parseInt 函数钦点进制的
DEMO

3.剖判从第一个可以深入分析的字符开首,到第二个无法深入分析的字符(如空格,标点符号等)结束。后边的字符不再解析。借使第三个字符就不得以解析,则赶回NaN。

parseInt() 函数将加以的字符串以钦赐基数(radix/base)分析成为整数。

何以修改?

前边说过, 有八个参数, 第一个参数可以钦定计算使用的进制.

由此我们得以将日前不时常的这段 JavaScript 代码改写为上面包车型地铁代码.

诸有此类管理的话, 我们再重写一些眼下的 DEMO, 如下:
为 parseInt 函数钦赐进制为 10 的
DEMO

难忘了, 在 JavaScript 上选用 parseInt 方法时要带上进制参数.


回去此题来深入分析

语法

1
parseInt(string, radix);

 

JavaScript parseInt() 函数

JavaScript
全局对象

b的首字母是0,按8进制分析前边的数值,也正是8进制的1。自然重回值为1。<br>c的首字母是0,按8进制深入分析前边的数值,不过第三个字符9已经不是8进制数,也正是9是率先个不能够深入分析的字符,parseInt(“09/08/2008”)也正是parseInt(“0”),自然重临值是0<br>注:8也不是8进制数,最大到7

参数

string
要被剖判的值。假使参数不是叁个字符串,则将其转移为字符串。字符串开端的空白符将会被忽视。

radix
三个2到36之间的整数值,用于内定调换中选取的基数。比如参数”10″表示使用大家平时选取的十进制数值系统。一而再钦定该参数能够去掉阅读该代码时的猜忌并且保证调换结果可预测。当忽略该参数时,区别的完结景况大概产生不一致的结果。

概念和用法

parseInt() 函数可深入分析多少个字符串,并重返多少个大背头。

变形:

描述

parseInt
顶尖函数,未有与别的对象关联。

parseInt
函数将率先个参数(字符串)深入分析并意欲再次回到二个大背头要么NaN(Not
a Number)。假使结果不是NaN,那么重返值是把第贰个参数作为是radix参数钦点的进制下的数,然后把它调换来十进制的整数。比方:radix参数为10
将会把第多少个参数作为是一个数的十进制表示,8 对应八进制,16
对应十六进制,等等。基数大于 10 时,用字母表中的字母来表示大于 9
的数字。举例十六进制中,使用 A 到 F。

若果 parseInt
遇到了不属于radix参数所内定的基数中的字符那么该字符和之后的字符都将被忽视。接着再次回到已经解析的大背底部分。parseInt 将截取整数局地。开首和结尾的空白符允许存在,会被忽视。

在并未有一点点名基数,恐怕基数为 0 的气象下,JavaScript 作如下管理:

  • 倘使字符串 string
    以”0x”可能”0X”开端, 则基数是16 (16进制).
  • 只要字符串 string
    以”0″最早,
    基数是8(八进制)或许10(十进制),那么具体是哪位基数由完成遇到调整。ECMAScript
    5 规定利用10,可是而不是具备的浏览器都依据这几个明确。因此,千古都要分明给出radix参数的值
  • 借使字符串 string
    以其余任何值初阶,则基数是10 (十进制)。

一旦第一个字符无法被转变到数字,parseInt再次来到NaN。

算术上,NaN
不是另外二个进制下的数。你能够调用isNaN来决断parseInt
是不是再次来到 NaN。NaN
参预的数学运算其结果一连 NaN。

将整型数值以一定基数调换来它的字符串值能够选取 intValue.toString(radix).

语法

parseInt(string, radix)
参数 描述
string 必需。要被解析的字符串。
radix

可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。

如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

var c = parseInt("0119/08/2009");
alert("c="+c);

示例

返回值

归来剖判后的数字。

分析:

例子:使用 parseInt

以下例子均重临15

1
2
3
4
5
6
7
8
parseInt("F", 16);
parseInt("17", 8);
parseInt("15", 10);
parseInt(15.99, 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("12", 13);

 

以下例子均重临 NaN:

1
2
parseInt("Hello", 8); // Not a number at all
parseInt("546", 2);   // Digits are not valid for binary representations

 

 

以下例子均重回 -15:

1
2
3
4
5
6
7
8
9
parseInt("-F", 16);
parseInt("-0F", 16);
parseInt("-0XF", 16);
parseInt(-15.1, 10);
parseInt(" -17", 8);
parseInt(" -15", 10);
parseInt("-1111", 2);
parseInt("-15e1", 10);
parseInt("-12", 13);

 

下例中也一切回来 17,因为输入的 string
参数以 “0x”
开首时作为十六进制数字表明,而第3个参数若是经过 Number 函数转变后为 0
或 NaN,则将会忽略。

1
2
3
parseInt("0x11", 16);
parseInt("0x11", 0);
parseInt("0x11");

 

上边的例子重返 224

1
parseInt("0e0",16);

 

 

从不点名 radix
参数时的八进制解析

即便 ECMAScript 3 已经不赞同这种做法,且 ECMAScript
5 已经禁止了这种做法,可是照旧有比非常多落实情况仍旧把以 0
开始的数值字符串(numeric
string)解释为三个八进制数。上边包车型客车事例恐怕回到八进制的结果,也只怕回到十进制的结果。连日来内定贰个基数(radix)能够幸免这种不可相信的表现。

1
2
parseInt("0e0"); // 0
parseInt("08"); // 0, '8' is not an octal digit.

 

ECMAScript 5 移除了八进制剖析

ECMAScript 5 规范不再允许parseInt函数的兑现遭逢把以0字符开首的字符串作为八进制数值。ECMAScript
5 陈说如下:

The parseInt function
produces an integer value dictated by interpretation of the contents of
the string argument according to the specified radix. Leading white
space in string is ignored. If radix is undefined or 0,
it is assumed to be 10 except
when the number begins with the character pairs 0x or 0X,
in which case a radix of 16 is assumed. If radix is 16,
number may also optionally begin with the character pairs 0x or 0X.

那与ECMAScript 3答非所问,ECMAScript
3仅仅是不提倡这种做法但并从未禁止这种做法。

以致于二〇一一年,比相当多贯彻境遇并不曾接纳新的正式所鲜明的做法,
何况由于必需同盟旧版的浏览器,所以世世代代都要旗帜显明给出radix参数的值.

说明

当参数 radix 的值为 0,或尚未安装该参数时,parseInt() 会依照 string
来判断数字的基数。

举例,如果 string 以 “0x” 开头,parseInt() 会把 string
的其他部分剖析为十六进制的卡尺头。假如 string 以 0 最早,那么 ECMAScript
v3 允许 parseInt()
的三个实现把将来的字符深入分析为八进制或十六进制的数字。假设 string 以 1 ~
9 的数字开始,parseInt() 将把它深入分析为十进制的莫西干发型。

相当于parseInt(“011”),0*8^2+1*8^1+1*8^0=0+8+1=9,输出结果为c=9
parseFloat()和parseInt()

多少个更严酷的深入分析函数

不常利用三个更严俊的不二等秘书诀来剖析整型值很有用。此时能够利用正则表达式:

1
2
3
4
5
6
7
8
9
10
11
12
13
filterInt = function (value) {
   if(/^(\-|\+)?([0-9]+|Infinity)$/.test(value))
       return Number(value);
   return NaN;
}
console.log(filterInt('421'));               // 421
console.log(filterInt('-421'));              // -421
console.log(filterInt('+421'));              // 421
console.log(filterInt('Infinity'));          // Infinity
console.log(filterInt('421e+0'));            // NaN
console.log(filterInt('421hop'));            // NaN
console.log(filterInt('hop1.61803398875'));  // NaN
console.log(filterInt('1.61803398875'));     // NaN

 

 


 好,看完上边的内容大多数小友人都感觉明白了parseInt(),上边出一道考题考一下。

图片 3

 

 

What is the result of this expression? 

 

["1""2", "3"].map(parseInt)

["1", "2", "3"][1, 2, 3][0, 1, 2]other

答案分析:

what
you actually get is [1, NaN, NaN]because parseInt takes
two parameters (val, radix) and map passes 3(element,
index, array)

那道题的不易答案是[1,NaN,NaN],只要弄清楚数组的map方法传给回调函数parseInt的参数就很轻松顿悟,map函数字传送递的八个参数,回调函数会选拔前多少个参数,第一项为某一项因素,第二项为该因素下标索引。上述的表明式等价于

1
2
3
parseInt("1",0);//1,前面说过基数为0时的处理情况(请回头看)
parseInt("2",1);//NaN,在1进制里2不是有效数字,有效数字只有0
parseInt("3",2);//NaN,在二进制里3不是有效数字

 

 

为此您感觉作者是实在精晓了parseInt(),看上面包车型客车例子:

  1. console.log(parseInt(0.000001));
  2. console.log(parseInt(0.0000001));

因而您以为输出会是何等啊:

            第一条语句输出 0, 第二条语句输出
1

精心的您有未有察觉这里传给parseInt的参数并非字符串而是二个浮点数。

查看ECMA规范

图片 4

 

 标准中介绍了施行该函数的第一步是将参数转变到字符串,通过调用toString方法。

1
2
console.log(0.000001.toString());//0.000001
console.log(0.0000001.toString());//1e-7

 

对于小于
1e-6 的数值来讲,ToString
时会活动调换为科学计数法。未来你精通地点结果是怎么着产生的了!


2016年6月19日续

图片 5

 

 

 

 不蔓不枝,大家再看四个事例:

1
parseInt("010");

 

前边提到过ES5撤回了八进制自动剖析,全数其结果依靠浏览器版本会有分别:规范浏览器中(私下认可支持ES5),输出10,IE8和IE8以下是出口8;

上面我们不扩散字符串而是传入8进制字面量

 

1
parseInt(010);//8

 

前面大家领会参数首先要调用toString()方法.

1
console.log(010.toString());//8

 

进而在享有的浏览器中上式都以8.

本着八进制的剖释小结:非严苛形式的下:
1.在IE9或然IE9以上还应该有任何专门的学业浏览器中,假诺参数是字符,并不会对其进展八进制调换,借使参数是八进制字面量,从最终结果看是比照八进制情势张开了退换。
2.在IE8和IE8以下浏览器中,无论传入的是字符串依旧八进制字面量,都会依据八进制格局打开转移。

前几天大家看下一冷酷形式下的图景:

1.一旦参数是字符,严酷格局下和非严峻方式下是同样的,都以遵守相应的ES版本分析。

2.若是参数是八进制字面量

 

1
2
"use strict"
console.log(parseInt(010));//IE9及以下不支持严格模式,解析为8,IE10及以上解析会出错:strict 模式下不允许使用八进制数字参数和转义字符

 

 

 

发源为知笔记(Wiz)

提拔和注释

讲明:独有字符串中的第一个数字会被再次回到。

申明:开首和终极的空格是允许的。

提醒:倘若字符串的率先个字符不能被转移为数字,那么 parseFloat() 会重回NaN。

parseInt()能够带参数,内定二进制、八进制也许十六进制(私下认可十进制),而parseFloat()不带参数,无法深入分析八进制、十六进制数,就不得不按十进制实行。

实例

在本例中,我们将利用 parseInt() 来剖判不相同的字符串:

parseInt("10");            //返回 10
parseInt("19",10);      //返回 19 (10+9)
parseInt("11",2);       //返回 3 (2+1)
parseInt("17",8);       //返回 15 (8+7)
parseInt("1f",16);      //返回 31 (16+15)
parseInt("010");        //未定:返回 10 或 8

再来看parseInt()和.map()结合的例子

TIY

parseInt()
什么样选拔 parseInt() 来解析差异的字符串。

JavaScript
全局对象

 

[“1”, “2”, “3”].map(parseInt) 重返值又是不怎么呢

map方法

array1.map(callbackfn[, thisArg])

对数组的每一种成分,调用定义的回调函数,重返贰个数组富含结果

参数:

array1 必须。一个数组对象
callbackfn 必须。最多接受三个参数(数组元素的值,数组元素的索引,包含该元素的数组对象)的回调函数
thisArg 可选。

即原例子也正是

[parseInt("1",0),parseInt("2",1),parseInt("3",2)]

分析:

1按十进制转换输出1
1不在2~36之间,输出NaN
字符串”3“里面未有合法的二进制数,输出NaN
故此最终结果是[1,NaN,NaN]

越来越多关于JavaScript相关内容感兴趣的读者可查阅本站专题:《JavaScript数学生运动算用法计算》、《JavaScript数据结构与算法技术总计》、《JavaScript数组操作技术总计》、《JavaScript排序算法总括》、《JavaScript遍历算法与本领计算》、《JavaScript查找算法技能总结》及《JavaScript错误与调治本事总括》

意在本文所述对我们JavaScript程序设计有着支持。

您或然感兴趣的篇章:

  • javascript
    parseInt与Number函数的差距
  • js parseInt的骗局分析计算
  • js中parseInt函数浅谈
  • js数值总结时使用parseInt举行数据类型转变(jquery)
  • javascript
    数据类型转变(parseInt,parseFloat)
  • parseInt parseFloat
    js字符串调换数字
  • JavaScript的parseInt
    取整使用
  • 在JavaScript中操作数组之map()方法的运用
  • JS Map 和 List
    的归纳达成代码
  • 利用gson将map转为json示例
  • js完结的map方法示例代码
  • js中生成map对象的艺术
  • Java中火速把map转成json格式的情势

相关文章