07-JS常用内置方法

image.png

1. Math()方法

  1. Math()是一个静态属性和方法的集合

  2. 静态方法 :类名直接使用的方法

  3. 静态属性 :类名下对应的属性

  • 动态方法
var arr = [1, 2, 3, 4];
if (arr = Array.from(divs)) {
    // 动态方法,针对对象来使用
    arr.splice(1, 1);
    //动态属性
    arr.a = 5;
}
var obj=new Object();   //正确
var arr=new Array();    //正确
var m=new Math();   //错误的
  • 求2的平方根
console.log(Math.SQRT2);    //1.4142135623730951
console.log(Math.sqrt(8));  //2.8284271247461903
  • 求立方根
console.log(Math.pow(2,1/3));
  • 求根号1/2
console.log(Math.SQRT1_2);  //0.7071067811865476
  • 求绝对值
Math.abs(-4);   //4
  • 四舍五入
console.log(Math.round(3.45))   //3
//小数点变成正数后才能四舍五入
console.log(Math.round(-3.5));  //-3   -4 + 0.5 (0.5进1)
console.log(Math.round(-3.6));  //-4   -4 + 0.4(0.4舍去)
  • 向上舍入
console.log(Math.ceil(3.1));    //4
console.log(Math.ceil(-3.1));   //3
  • 向下舍入
console.log(Math.floor(3.6))    //3
  • 求最大值
var max = Math.max(3, 4, 5);
console.log(max);   //5
  • 求最小值
var min = Math.min(3, 4, 5);
console.log(min);   //5
  • 求数组项的最大值
var arr=[1,3,5,2,3,6];
var max = Math.max.apply(null, arr);
console.log(max);   //6
  • 求数组项的最小值
var arr=[1,3,5,2,3,6];
var min = Math.min.apply(null, arr);
console.log(max);
  • 求两点间的最短距离
function getDistance(p1, p2) {
    return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
}
console.log(getDistance({x:50,y:50},{x:100,y:100}));
  • 产生某区间的随机数
function random(min, max) {
    return Math.floor(Math.random() * (max - min) + min);
}
console.log(random(50,150));
  • 产生随机颜色

    • 方法一
    function randomColor() {
        var col = "#";
        for (var i = 0; i < 6; i++) {
            col += Math.floor(Math.random() * 16).toString(16);
        }
        return col;
    }
    
    • 方法二
    function randomColor1() {
        var col = "rgba("
        for (var i = 0; i < 3; i++) {
            col += Math.floor(Math.random() * 255 + 1);
        }
        return col + ")";
    }
    document.body.style.backgroundColor = randomColor();
    
    
    • 方法三
    function getColorPro() {
        return "#" + parseInt(parseInt("FFFFFF", 16) * Math.random()).toString(16).padStart(6, 0);
    }
    

2. Number()方法

  • 最大正数
console.log(Number.MAX_VALUE);
  • 最大负数
console.log(Number.MIN_VALUE);
  • 正无穷
console.log(Number.POSITIVE_INFINITY);  //Infinity
  • 负无穷
console.log(Number.NEGATIVE_INFINITY);  //-Infinity
  • 判断数值
console.log(Number.NaN);
console.log(NaN);
  • 转为字符串
var n = Number(123);
console.log(n.toString());
  • 保留小数点,四舍五入转换为字符串
var a = 3.61415;
a.toFixed();    //4
  • 按照当前本地设置转换为字符串
a.toLocaleString();
  • 转换为指数形式
a.toExponential();
  • 转换为指定长度字符
a.toPrecision();

3. String()方法

  • 存储位置
var str = "abc"; //存储在栈
var str1 = new String("abc"); //存储中堆中
console.log(str == str1); //true
console.log(str === str1); //false
  • 获取字符串长度

设置字符串的长度是无效的,长度是只读属性

var str = "abc"; 
str.length = 0; //设置无效
console.log(str.length);    //3
str.length = 0
  • 通过数组下标的方式改变字符串
var str = "abc"; 
str[0] = "x";   //设置无效
console.log(str);   //xbc
  • 返回指定位置的字符串
var str = "abc"; 
console.log(str.charAt(0));//str[0];
  • 按照编码格式转换编码值(unicode编码)
console.log(str.charCodeAt(0));
  • 将编码转换为字符
console.log(String.fromCharCode(0x4e00));   //"一"
  • 将编码转换为汉字
console.log("\u4e00");  //"一"
  • 字符串拼接
var str = "abc"; 
var str1=str.concat("xyz"); //相当于str1 = str+"xyz";
console.log(str);   //abcxyz

var n = 5;
var str1 = str + "现在" + n + "岁了";
var str1 = str.concat("现在", n, "岁了");
  • 查找字符在字符串中的位置 (只能查找字符 )
console.log(str.indexOf("b"));
console.log(str.lastIndexOf("b"));
  • 针对处理正则查找
console.log(str.search("c"));
  • 针对正则查找字符串中内容满足条件内容形成的数组
console.log(str.match("c"));
  • 替换字符串
  1. 普通使用时只能替换被查找到的第一个元素
  2. 原字符串不改变,返回替换后的新字符串
console.log(str.replace("c","z"));
  • 字符串截取

    • slice()方法

    只能从前向后截取,不能从后向前截取

    console.log(str.slice(1));//从第1个字符截取到最后一个
    
    • substring()方法

    可以从后向前截取 ,不能有负值

    console.log(str.substring(3,1));
    
  • 对象拼接成字符串,用&分隔

var obj = {
    a: 1,
    b: 2,
    c: 3
}
var str = "";
for (var prop in obj) {
    str += prop + "=" + obj[prop] + "&";
}
str = str.slice(0, -1);
console.log(str);
  • 转换为大写字母
console.log(str.toUpperCase());
  • 转换为小写字母
console.log("ABCDEF".toLowerCase());
  • 将字符串中的首字母大写
var str="sadjawljqwdaskljdklasjd";
str = str.replace(str[0],str[0].toUpperCase());
  • 分隔字符串
var arr = [1, 2, 3, 4, 5];
var str1 = arr.join("#");
console.log(str1);
var arr1 = str1.split("#");
console.log(arr1);
  • 取出字符串中的某一项
//截取出a和b的值
var str = "a=345&b=24"; 
var a = str.split("&")[0].split("=")[1];
var b = str.split("&")[1].split("=")[1];
console.log(a, b);  //345,24 

//截取字符串中的意思
var str = "这是一件非常有意思的事情";   
var index = str.indexOf("有") + 1;
var last = str.indexOf("的");
var str1 = str.slice(index, last);
console.log(str1);
var str1 = str.split("有")[1].split("的")[0];
console.log(str1);
  • 将地址栏中的字符串拆分成对象

    • 方法一
    var str = "https://detail.tmall.com/item.htm?id=282&spm=a21C&ump=qiang&channel=qianggou";
    
    function toObject(str) {
        var obj = {};
        str = str.split("?")[1];
        var arr = str.split("&");
        for (var i = 0; i < arr.length; i++) {
            var arr1 = arr[i].split("=");
            obj[arr1[0]] = arr1[1];
        }
        return obj;
    }
    console.log(toObject(str));
    
    • 方法二
    function toObject(str) {
        return str.split("?")[1].split("&").reduce(function(value, item) {
            var arr = item.split("=");
            value[arr[0]] = arr[1];
            return value;
        }, {});
    }
    console.log(toObject(str));
    

4.Date()方法

  • 时间戳

Date.now() ; 返回结果是从1970.1.1,0点0分到现在的毫秒数

console.log(date.getTime());
  • 获取当前年份
var d = new Date();
console.log(d.getFullYear());   //输出年份:2019

//设置年份
date.setFullYear(2000);
  • 获取月份

特殊:以0开始计算

console.log(d.getMonth() + 1);  //输出月份0-11
//设置月份
date.setMonth(5);   //设置为6月份
  • 获取周几
console.log(d.getDate());   //输出日:6
  • 输出当前的小时,分钟,秒数,毫秒数
console.log(d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());
  • 显示本地日期时间
console.log(new Date().toLocaleString());

//设置时间是30分钟后
date.setMinutes(date.getMinutes() + 30);
  • 显示格林尼治时间
console.log(date.toUTCString);
  • 分开获取当前时间
var date = new Date();
// 分开获取当前时间
console.log(date.toLocaleDateString());//显示日期
console.log(date.toLocaleTimeString());//显示小时
  • 计算代码段的运行时间

    • 方法一
    var obj = {
        list: [],
        ids: 0,
        start: function() {
            this.ids++;
            var _time = new Date().getTime();
            this.list.push({
                id: this.ids,
                time: _time
            });
            return this.ids;
        },
        end: function(id) {
            var arr = this.list.filter(function(item, index, arr1) {
                if (item.id === id) {
                    arr1.splice(index, 1);
                    return true;
                }
                return false;
            });
            console.log(arr);
            if (arr.length === 0) {
                console.log("错误id");
                return;
            }
            var time = new Date().getTime() - arr[0].time;
            return time;
        }
    }
    
    var id = obj.start();
    
    for (var i = 0; i < 10000000; i++);
    var id1 = obj.start();
    for (var j = 0; j < 10000000; j++);
    console.log(obj.end(id1));
    console.log(obj.end(id));
    
    • 方法二
    var obj = {
        data: {},
        ids: 0,
        start: function() {
            this.ids++;
            this.data[this.ids] = new Date().getTime();
            return this.ids;
        },
        end: function(id) {
            var item = this.data[id];
            if (item === undefined) {
                console.log("id错误");
                return;
            }
            delete this.data[id];
            return new Date().getTime() - item;
        }
    }
    
  • 将当前时间以汉字的形式显示

<div id="div0"></div>
var arr = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"];
var div;
init();

function init() {
    div = document.getElementById("div0");
    setInterval(animation, 16);
}

function enToCh(num, bool) {
    if (num === 0 || num === 10) return arr[num];
    if (num % 100 === 0) return arr[num / 100] + "百";
    if (num > 100 && num % 10 === 0) return arr[parseInt(num / 100)] + "百" + arr[num / 10 % 10] + "十";
    if (num < 10) return bool ? "零" + arr[num] : arr[num];
    if (num < 20) return "十" + arr[num % 10];
    if (num % 10 === 0) return arr[num / 10] + "十";
    if (num < 100) return arr[parseInt(num / 10)] + "十" + arr[num % 10];
    if (num % 100 < 10) return arr[parseInt(num / 100)] + "百零" + arr[num % 10];
    return arr[parseInt(num / 100)] + "百" + arr[parseInt(num / 10) % 10] + "十" + arr[num % 10];
}

function getYear(year) {
    year = year.toString();
    var str = "";
    for (var i = 0; i < year.length; i++) {
        str += arr[Number(year[i])];
    }
    return str;
}

function animation() {
    var date = new Date();
    var year = getYear(date.getFullYear());
    var day = enToCh(date.getDate());
    var week = !date.getDay() ? "星期日" : "星期" + enToCh(date.getDay());

    div.innerHTML = year + "年" + enToCh(date.getMonth() + 1) + "月" + day + "日&emsp;" + week + "&emsp;" + enToCh(date.getHours()) + "时" + enToCh(date.getMinutes(), true) + "分" + enToCh(date.getSeconds(), true) + "秒";
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容