原始类型包装器
两种调用方式:
- new 包装器(值):返回的是一个对象 new Number(123)
- 包装器(值):返回的是一个原始类型 Number(123)
为了方便使用,原始类型的静态方法,一般在浏览器环境中都挂在到了window对象上。
Number
静态成员
- isNaN
- isFinite
- isInteger:判断一个数据是否是整数
- parseFloat: 将一个数据转换为小数
- parseInt:将以一个数据转换为整数,直接舍去小数部分
parseInt、parseFloat要求参数是一个字符串,如果不是字符串,则会先转换为字符串。 从字符串开始位置进行查找,找到第一个有效的数字进行转换,如果没有找到,则返回NaN,左右空白字符会忽略
parseInt,可以传入第二个参数,表示将给定的字符串,识别为多少进制。
实例成员
- toFixed方法:会有四舍五入
- toPrecision:以指定的精度返回一个数字字符串
Boolean
String
静态成员
- fromCharCode:通过unicode编码创建字符串
实例成员
- length:字符串长度
字符串是一个伪数组
- charAt:得到指定位置的字符
- charCodeAt
- concat
- includes
- endsWith
- startsWith
- indexOf
- lastIndexOf
- padStart
- padEnd
- repeat
- slice:从某个位置取到某个位置;位置可以是负数;
- substr: 从某个位置开始取,取指定的长度;位置可以是负数;
- substring:从某个位置取到某个位置;不可以是负数;参数位置是可调换的。
- toLowerCase
- toUpperCase
- split:分割字符串
技巧--随机数
js
function getRandom(min, max) {
return parseInt(Math.random() * (max - min + 1) + min);
}练习
以下练习可以使用之前书写的通用函数
- 找到某个字符串中出现最多的字符,打印字符和它出现的次数
js
/**
* 得到数组中出现频率最高的数字或字符串和频率
* 返回一个对象
* @param {*} arr
*/
getTopFreqInArray: function (arr) {
var records = {}; //记录出现频率
for (var i = 0; i < arr.length; i++) {
var n = arr[i];
if (records[n]) {
records[n]++;
}
else {
records[n] = 1;
}
}
var result; //记录最终结果的对象
for (var prop in records) {
if (!result || records[prop] > result.frequency) {
result = {
number: prop,
frequency: records[prop]
};
}
}
return result;
},- 将一个字符串中单词之间的空格去掉,然后把每个单词首字母转换成大写
比如:"hello world" -> "HelloWorld" 大驼峰命名法
js
function bigCamel(s) {
//只考虑空格
return s.split(" ").filter(function(item) {
return item.length > 0;
}).map(function(item){
return item[0].toUpperCase() + item.substring(1).toLowerCase();
}).join("");
}
console.log(bigCamel(s));- 书写一个函数,产生一个指定长度的随机字符串,字符串中只能包含大写字母、小写字母、数字
js
function getRandomString(len) {
var template = "";
for (var i = 65; i < 65 + 26; i++) {
template += String.fromCharCode(i);
}
for (var i = 97; i < 97 + 26; i++) {
template += String.fromCharCode(i);
}
for (var i = 48; i < 48 + 10; i++) {
template += String.fromCharCode(i);
}
var result = "";
for (var i = 0; i < len; i++) {
//从模板中随机取出一位字符
var index = MyFunctions.getRandom(0, template.length - 1);
result += template[index];
}
return result;
}
console.log(getRandomString(20));- 将字符串按照字符编码的顺序重新升序排序 如果是降序
js
var s = "bffdgwfafagfdgsfafa";
var result = Array.from(s).sort().reverse().join("");
console.log(result);- 从一个标准的身份证号中取出用户的出生年月日和性别,保存到对象中
例如,"524713199703020014"
得到对象: birthYear: 1997 birthMonth: 3 birthDay: 2 gender: "男" // 性别看倒数第二位,奇数为男,偶数为女
js
function getInfoFromPID(pid) {
return {
birthYear: parseInt(pid.substr(6, 4)),
birthMonth: parseInt(pid.substr(10, 2)),
birthDay: parseInt(pid.substr(12, 2)),
gender: pid[pid.length - 2] % 2 === 0 ? "女" : "男"
}
}
console.log(getInfoFromPID("524713199703020014"));