Skip to content

原始类型包装器

两种调用方式:

  • 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);
}

练习

以下练习可以使用之前书写的通用函数

  1. 找到某个字符串中出现最多的字符,打印字符和它出现的次数
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;
},
  1. 将一个字符串中单词之间的空格去掉,然后把每个单词首字母转换成大写

比如:"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));
  1. 书写一个函数,产生一个指定长度的随机字符串,字符串中只能包含大写字母、小写字母、数字
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));
  1. 将字符串按照字符编码的顺序重新升序排序 如果是降序
js
var s = "bffdgwfafagfdgsfafa";
var result = Array.from(s).sort().reverse().join("");
console.log(result);
  1. 从一个标准的身份证号中取出用户的出生年月日和性别,保存到对象中

例如,"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"));

MIT License