js各种数字类型互转的方法
字符串转数字
1.当字符串中是纯数字
例如:var s = '234';
/********** 字符串在运算操作中会被当做数字类型来处理 ***************/
s *= 1;
/******* string的两个转换函数,只对string有效 ********/
parseInt(s); // 234
parseFloat(s); //234
/************ 强制类型转换 *********************/
Number(s); // 234
2.当字符串是数字加字母等非数字
例如: var s = '234string';
parseInt(s); //234
parseFloat(s); //234.0
parseInt() 函数从string的开始解析,返回一个整数
parseInt('123') : 返回 123;
parseInt('1234xxx') : 返回 1234;
parseInt('123.456') : 返回 123;
parseInt('1 2 3') : 返回 1;字符串的情况,自会返回第一个数
parseInt('bb cc 12') : 返回 NaN;字符串第一个不是数,返回nan
parseInt('123' 321) : 返回 321;
parseInt("AF", 16); 返回 175;会自动把二进制十六进制八进制的转化成数字
如果解析不到数字,则将返回一个NaN的值,可以用isNaN()函数来检测;
parseFloat()只会返回小数
js类型强转换
通过String(),Number(),Boolean()函数强制转换
var str=123;
var str1='123';
console.log(typeof str);
console.log(typeof str1);
console.log(typeof String(str));
console.log(typeof Number(str1));
输出
number
string
string
number
1、数组转字符串
需要将数组元素用某个字符连接成字符串,示例代码如下:
var a, b,c; a = new Array(a,b,c,d,e); b = a.join('-'); //a-b-c-d-e 使用-拼接数组元素 c = a.join(''); //abcde
2、字符串转数组
实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下:
var str = 'ab+c+de'; var a = str.split('+'); // [ab, c, de] var b = str.split(''); //[a, b, +, c, +, d, e]
标准二维数组变一维数组的方法
方法一
利用es5
的arr.reduce(callback[, initialValue])
实现
var arr1 = [[0, 1], [2, 3], [4, 5]];
var arr2 = arr1.reduce(function (a, b) { return a.concat(b)} );
// arr2 [0, 1, 2, 3, 4, 5]
方法二
利用es6
var arr1 = [[0, 1], [2, 3], [4, 5]];
function flatten(arr) { return [].concat( ...arr.map(x => Array.isArray(x) ? flatten(x) : x) ) }
var arr2 = flatten(arr1); // arr2 [0, 1, 2, 3, 4, 5]
优点: 多维数组也可以
比如:var arr = [[1,2],3,[[[4], 5]]]
方法三
利用apply
实现
var arr1 = [[0, 1], [2, 3], [4, 5]];
var arr2 = [].concat.apply([], arr1);
// arr2 [0, 1, 2, 3, 4, 5]
方法四
1. 通过将数组转变成字符串,利用str.split(',')
实现。缺点是数组元素都变字符串了
var arr1 = [[0, 1], [2, 3], [4, 5]];
var arr2 = (arr1 + '').split(',');
var arr2 = arr.toString().split(',');
var arr2 = arr.join().split(',');
// arr2 ["0", "1", "2", "3", "4", "5"]
方法二:使用toString()
toString() 方法可把一个逻辑值转换为字符串,并返回结果。
var a = [1,3,4,5,[6,7,9],[2],[5]];
a = a.toString().split(",");
输出结果a=[1,3,4,5,6,7,9,2,5];
方法三:空字符串
var a = [1,3,4,5,[6,7,9],[2],[5]];
a = (a+'').split(',');
输出结果a=[1,3,4,5,6,7,9,2,5];
其实以上的三种方法都是一个原理,就是先把数组转化为字符串,然后在对字符串进行操作,最终达到把多维数组中的数据转化为一维数组。但是都将整型转成了字符串。