数据类型——方法总结(可能有不对的)
假设:var arr=['100px','abc'-6,[],-98765,34,-2,0,'300', ,function(){alert(1);},null,document,[],true,'200px'-30,'23.45元',5,Number('abc'),function(){alert(3);}];
1、判断一个数是整数还是小数
if(parseInt(num)===parseFloat(num)) {
console.log(num + '是整数');
}else{
console.log(num + '是小数');
}
2、如何把数字类型中的数字过滤出来
If(typeof arr[i]==='number'&&!isNaN(arr[i]))
If(typeof arr[i]==='number'&&arr[i]==arr[i]) // 因为NaN跟它本身不相等,可以排除掉NaN
3、isNaN()
经过Number()筛选,是NaN,就true
经过Number()筛选,是数字,就false
!isNaN()
经过Number()筛选,是NaN,就false
经过Number()筛选,是数字,就true
* 而经过Number()筛选出数字的,有可能是 纯数字、纯数字字符串、布尔值、简单的数组
4、找出可以转成数字的
// 方法一:
for( var i=0;i<arr.length;i++ ) {
if(!isNaN(arr[i])||parseFloat(arr[i])) {
console.log(arr[i]);
}
}
// 方法二:会把 []、null 给漏掉,因为0、null、undefined在if里都是false,也就是if(0)==if(false) if(null)==if(false) if(undefined)==if(false),放在if里面,它们就跑到false那里去执行了
for( var i=0;i<arr.length;i++ ) {
if(Number(arr[i])||parseFloat(arr[i])) {
console.log(arr[i]);
}
}
PS:数据类型:数字类型、字符串、布尔值、函数、对象(元素、[] 、{} 、null)、未定义
真:非0的数字、非空字符串、true、函数、能找到的元素、[]、{}
假:0、NaN、空字符串、false、null、未定义
5、parseInt() parseFloat() 可以转数字的有:纯数字 字符串(至少第一个字符是数字) 非空数组(根据第一个逗号之前的数转)
Number() 可以转数字的有:纯数字 纯数字字符串 布尔值 null 数组( [] [纯数字] )
parseFloat()&&Number() :纯数字 纯数字字符串 数组( [纯数字] )
parseFloat()||Number() :纯数字 字符串( 至少第一个字符是数字 ) 布尔值 null 数组(简单的数组) ,但是要注意的是,如果放在if中做判断,0 null 这样的会是false的,参见方法二