javascript内置函数 -- Math对象、Date对象、Array对象、数组排序、字符串对象、数组排序

代码写的比较乱 因为时间聪明没有来得及分目录,请慢慢阅读!
为您带来的不便表示深刻得歉意

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>内置对象</title>
    <script>
        //内置对象
        //对象分为  自定义对象  内置对象  浏览器对象(js专属)
        //内置对象就是js自带的对象 常用的方法  快速开发
        //(1)Math
        console.log(Math.PI);//圆周率
        console.log(Math.max(1,10));//10
        console.log(Math.max(-1,-10));//-1
        console.log(Math.max(1,99,'杨'));//NaN
        console.log(Math.max());//-Infinity
        //求最大值和最小值
        var myMath = {
            PI:3.141592,
            max: function(){
                var max = arguments[0];
                for(var i = 1; i < arguments.length; i++){
                    if(arguments[i] > max){
                        max = arguments[i];
                    }
                }
                return max;
            },
            min: function(){
                var min = arguments[0];
                for(var i = 1; i < arguments.length; i++){
                    if(arguments[i] < min){
                        min = arguments[i];
                    }
                } 
                return min;
            }
        }
        console.log(myMath.PI);
        console.log(myMath.max(1,5,9));
        console.log(myMath.min(1,5,9));

        //绝对值
        console.log(Math.abs(1));//1
        console.log(Math.abs(-1));//1
        console.log(Math.abs('-1'));//隐式转化

        //三个取整方式
        //(1) Math.floor() 向下取整
        console.log(Math.floor(1.1)); //1
        console.log(Math.floor(1.9)); //1

        //(1) Math.ceil() 向上取整 ceil(天花板)
        console.log(Math.ceil(1.1)); //2
        console.log(Math.ceil(1.9)); //2

        //(1) Math.round() 四舍五入 其他数字遵从四舍五入 5特殊 它往大的取 因为负数-1大于-2所以取-1
        console.log(Math.round(1.1)); //1
        console.log(Math.round(1.9)); //2
        console.log(Math.round(-1.1)); //-1
        console.log(Math.round(-1.5)); //-1 特殊情况

        //随机数
        console.log(Math.random());// 范围[0,1)

        //随机整数
        function getRandomIntInclusive(min, max) {
            min = Math.ceil(min);1
            max = Math.floor(max);9
        return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值 
            //0.9*8 = 0.72   Math.floor(0.72) == 7+1
        }
        console.log(getRandomIntInclusive(1,9));


        //随机点名
        var arr = ['张三','张三丰','李四'];
        console.log(arr[0]);
        console.log(arr[getRandomIntInclusive(0,arr.length - 1)]);

        //猜数字
        // function getRandom(min, max) {
        //     min = Math.ceil(min);1
        //     max = Math.floor(max);9
        // return Math.floor(Math.random() * (max - min + 1)) + min; 
        // }
        // var random = getRandom(1,10);
        // console.log(random);
        // while(true){
        //     var num = prompt("猜猜数字,输入1-10的数字");
        //     if(num > random){
        //         alert("数字猜大了");
        //     }else if(num < random){
        //         alert("数字猜小了");
        //     }else{
        //         alert("恭喜你,猜对了");
        //         break;
        //     }
        // }
        



        //只能猜十次
        // function getRandom(min, max) {
        //     min = Math.ceil(min);1
        //     max = Math.floor(max);9
        // return Math.floor(Math.random() * (max - min + 1)) + min; 
        // }
        // var random = getRandom(1,10);
        // console.log(random);
        // for(var i = 0; i < 10; i++){
        //     if(i < 10){
        //         var num = prompt("猜猜数字,输入1-50的数字");
        //         if(num > random){
        //             alert('您已经猜了'+ i +'次,您得数字猜大了');
        //         }else if(num < random){
        //             alert('您已经猜了'+ i +'次,您得数字猜小了');
        //         }else{
        //             alert("恭喜您,您在第" + i + "次,猜对了");
        //             break;
        //         }
        //     }else{
        //         alert('您已经猜了第' + i + '次了,已经没有机会了,请开启下一轮')
        //         break;
        //     }
        // }

        //日期对象 是一个构造函数 必须使用new 来调用
        //
        var arr = new Array();//创建了以恶搞数组对象
        var obj = new Object();//创建了一个对象实例

        //使用date
var date = new Date();//如果没有参数 返回当前系统当前时间

        console.log(date);


        //参数常用方法
        var date1 = new  Date(2019,10,1);
        console.log(date1);//返回的是11月不是10月

        var date2 = new  Date('2019-10-1 8:8:8');
        console.log(date2);

        console.log(date.getFullYear());//返回当前年份
        console.log(date.getMonth());//返回得是当前月份 但是系统输出得是(0-11) 返回的就小一个月
        console.log(date.getDate());//返回号数
        console.log(date.getDay()); //周一返回的是1 周六返回6 但是周天返回0
        //写一个完整格式
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var dates = date.getDate();
        var day = date.getDay();
        var arr = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六'];

        console.log('今天是' + year + '年' + month + '月' + dates + '日 ' + arr[day]);
            
        console.log(date.getHours());
        console.log(date.getMinutes());
        console.log(date.getSeconds());
        console.log(date.getTime());

            //要求封装当前时间时分秒
        function getTime(){
            var time = new Date();
            var h = time.getHours();
            h = h < 10 ? '0' + h : h;
            var m = time.getMinutes();
            m = m < 10 ? '0' + m : m;
            var s=  time.getSeconds();
            s = s < 10 ? '0' + s : s;
            return h + ':' + m + ':' + s;
        }
        console.log(getTime());
        

//重点
        //获得Date总毫秒数(时间戳) 从1970年到现在得毫秒数
        //1.通过valueOf()   getTime()
        console.log(date.valueOf());//距离1970一月一号年得毫秒数
        console.log(date.getTime());
        //2.简单的写法(最常用的方法)
        var dateTime = +new Date();
        console.log(dateTime);
        //3.H5新增 获得总的毫秒数
        console.log(Date.now());


        //倒计时

        // d = parseInt(总秒数/60/60/24);    //计算天数
        // h = parseInt(总秒数/60/60%24);    //计算小时
        // m = parseInt(总秒数/60%60);    //计算分钟
        // s = parseInt(总秒数%60);    //计算秒数
        

        function countDown(time){
            var nowTime = +new Date();//返回当前时间总总毫秒数
            var inputTime = +new Date(time);  //返回用户输入时间的总毫秒
            var times = (inputTime - nowTime) / 1000 ; //times是剩余时间总秒数
            //转换
            var d = parseInt(times / 60 / 60 / 24);   //天
            d = d < 10 ? '0' + d : d;
            var h = parseInt(times / 60 / 60 % 24);
            h = h < 10 ? '0' + h : h;
            var m = parseInt(times / 60 % 60);
            m = m < 10 ? '0' + m : m;
            var s = parseInt(times % 60);
            s = s < 10 ? '0' + s : s;
            return d + '天' + h + '时' + m + '分' + s + '秒';
        }
        console.log(countDown('2021-1-1 12:00:00'));


        //数组对象

        //1.利用数组字面量
        var arr = [1,2,3];
        console.log(arr[0]);
        //2.利用new array 
        var arr1 = new Array();//创建了一个空的数组
        var arr2 = new Array(2);//2表示u数组长度为2 里面有两个空的数据元素
        console.log(arr2);
        var arr3 = new Array(2,3);
        console.log(arr3);


        function reverse(arr){
            if(arr instanceof Array){
            // if(Array.isArray(arr)){
                var newArr = [];
                for(var i = arr.length - 1; i >= 0; i--){
                    newArr[newArr.length] = arr[i];
                }
                return newArr;
            }else{
                return '这个参数必须是数组格式'
            }
        }
        console.log(reverse([1,2,3]));
        console.log(reverse(1,2,3));

        //检测是否为数组
        //1.instanceof 运算符
        var arr = [];
        var obj = {};
        console.log(arr instanceof Array);
        console.log(obj instanceof Array);
        //2.Array.isArray(参数);  H5新增方法 ie9以上版本才支持
        console.log(Array.isArray(arr));
        console.log(Array.isArray(obj));

        //添加数组元素得方法
        //1.push() 再数组末尾 添加一个或者多个元素 push 推
        var arr = [1,2,3];
        // arr.push(4,'杨');
        console.log(arr);
        console.log(arr.push(4,'杨'));
        //(1) push 是可以给数组追加新的元素
        //(2) push() 参数直接写 数组元素即可
        //(3) push 完毕之后返回的是 新数组的长度
        //(4) 原数组也会发生改变

        //2.unshift 再数组开头 添加一个或者多个元素
        // arr.unshift('red');
        console.log(arr.unshift('red'));
        console.log(arr);

        //(1) unshift 是可以给数组前面追加新的元素
        //(2) unshift() 参数直接写 数组元素即可
        //(3) unshift 完毕之后返回的是 新数组的长度
        //(4) 原数组也会发生改变

        //3.pop() 它可以删除数组最后一个元素
        // arr.pop();
        console.log(arr.pop());//返回值是删除的元素
        console.log(arr);

        //(1) pop 是可以删除数组最后一个元素 只能一个
        //(2) pop() 没有参数
        //(3) pop 完毕之后返回的是 删除的元素
        //(4) 原数组也会发生改变

        //4.shift() 它可以删除数组最后一个元素
        // arr.shift();
        console.log(arr.shift());
        console.log(arr);

        //(1) shift 是可以删除数组最前一个元素 只能一个
        //(2) shift() 没有参数
        //(3) shift 完毕之后返回的是 删除的元素
        //(4) 原数组也会发生改变


        //剔除2000以上的
        function screen(){
            var screen = [1500,1200,2100,1800];
            var newScreen = [];
            for(var i = 0;i <= screen.length;i++){
                if(screen[i] < 2000){
                    // newScreen[newScreen.length] = screen[i];
                    newScreen.push(screen[i])
                }
            }
            return newScreen;
        }
        console.log(screen());


        //数组排序
        // 1.翻转函数  reverse
        var arr = ['pink','red','blue'];
        arr.reverse();
        console.log(arr);
        //2.数组排序(冒泡排序) sort
        // var arr = ['1','3','2'];
        var arr = ['11','331','5']; //会出现排序错误
        arr.sort();
        console.log(arr);

        var arr1 = ['11','331','5']; //会出现排序错误
        arr1.sort(function(a,b){//如果a - b 大于0就交换位置 小于则不变  b - a同理
            return a - b;//升序
            return b - a;//降序
        });
        console.log(arr1);


        //数组索引方法  返回该数组元素的索引号  indexOf(数组元素) 
        //他只会返回第一个满足的索引
        //如果在该元素找不到元素 则返回    -1
        var arr = ['pink','red','blue','red'];
        console.log(arr.indexOf('red'));//  1
        console.log(arr.indexOf('red')); // 1
        console.log(arr.indexOf('red1'));// -1


        //数组索引方法  返回该数组元素的索引号  lastIndexOf(数组元素) 
        //从最后查找符合得数组元素返回索引号
        //如果在该元素找不到元素 则返回    -1
        var arr = ['pink','red','blue','red'];
        console.log(arr.lastIndexOf('red'));//  3
        console.log(arr.lastIndexOf('red')); // 3
        console.log(arr.lastIndexOf('red1'));// -1

        //数组去重
        function unique(arr){
            newArr =  [];
            for(var i = 0; i < arr.length; i++){
                if(newArr.indexOf(arr[i]) === -1){
                    newArr.push(arr[i]);
                }
            }
            return newArr;
        }
        
         arr = ['a','b','c','n','f','e','w','d','h','j','a','b'];
        var dome = unique(['a','b','c','n','f','e','w','d','h','j','a','b']);
        console.log(dome);

        //数组转换为字符串
        //1.toString()
        var arr = [1,2,3];
        console.log(arr.toString()); 
        //2.join(分隔符)
        var arr1 = ['greed','blue','pink'];
        console.log((arr.join()));
        console.log((arr.join('-')));  //1-2-3
        console.log((arr.join('&')));  //1&2&3

        //课后了解
        //1.concat()链接两个或多个数组 不影响原数组     返回的新数组
        let hello = 'Hello, '
        console.log(hello.concat('Kevin', '. Have a nice day.'))
        // Hello, Kevin. Have a nice day.

        let greetList = ['Hello', ' ', 'Venkat', '!']
        "".concat(...greetList)  // "Hello Venkat!"

        "".concat({})    // [object Object]
        "".concat([])    // ""
        "".concat(null)  // "null"
        "".concat(true)  // "true"
        "".concat(4, 5)  // "45"

        //2.slice() 数组截取slice(begin,end)    返回被截取的数组
        //(1)begin 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
        //(2)可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
        // create an ArrayBuffer with a size in bytes
        const buffer = new ArrayBuffer(16);
        const int32View = new Int32Array(buffer);
        // produces Int32Array [0, 0, 0, 0]
        int32View[1] = 42;
        const sliced = new Int32Array(buffer.slice(4, 12));
        // produces Int32Array [42, 0]
        console.log(sliced[0]);
        // expected output: 42

        var arr = new Array(3)
        arr[0] = "George"
        arr[1] = "John"
        arr[2] = "Thomas"

        document.write(arr + "<br />")
        document.write(arr.slice(1) + "<br />")
        document.write(arr)
        //3.splice() 数组删除splice() 数组删除spilce(第几个开始,要删除格式)    返回被删除的数组,注意  这个会影响原数组
        const months = ['Jan', 'March', 'April', 'June'];
        months.splice(1, 0, 'Feb');
        // inserts at index 1
        console.log(months);
        // expected output: Array ["Jan", "Feb", "March", "April", "June"]

        months.splice(4, 1, 'May');
        // replaces 1 element at index 4
        console.log(months);
        // expected output: Array ["Jan", "Feb", "March", "April", "May"]

        //4.substr('截取的起始位置','截取几个字符')
        var str1 = '改革春风吹满地';
        console.log((str1.substr(2,2)));

        //5.replace('被替换的字符','替换为的字符') 智慧替换满足第一个
        var str2 = '改革春风吹满地';
        console.log(str2.replace('春风','一样'));

        //6.split('分隔符') 分隔符取决于你字符得分隔符 字符转换为数组  以前学过join() 把数组转换为字符串
        var str3 = 'red,blue,pink';
        console.log(str3.split(','));
        var str4 = 'red&blue&pink';
        console.log(str4.split('&'));

        //案例 
        var s = 'bdhjsavbfhuagdashjk';
        while(s.indexOf('s') !== -1){
            s = s.replace('s','*');
        }
        console.log(s);

        //字符串对象
        var str = 'andy';
        console.log(str.length);
        //对象 才有属性和方法  复杂类型才有 属性和方法
        //简单数据类型为什么会有length
        //基本包装类型: 就是把简单的数据类型 包装成为了 复杂数据类型
        //(1)把把简单数据类型包装为复杂类型
        var temp = new String('andy');
        //(2)把临时变量给 str
        str  = temp;
        //(3)销毁这个零时变量
        temp = null;
        //字符串不可变   我们看到得改变只是 str只是从原值得存储空间指向了从另一个新值得空间
        
        var str ="jandy";
        console.log(str);
        str = 'red';
        console.log(str);
        //所以不要大量的拼接字符
        // var str = '';
        // for(var i = 0; i < 10; i++){
        //     str += 1; 
        // }


        //根据字符返回位置 str.indexOf('要查找的字符',[起始的位置])
        var str = '121234562';
        console.log(str.indexOf(2,4));//从索引 4开始查找

        //lastIndexOf('要查找的字符',[起始的位置]) 从后面开始查找

        //返回字符元素出现的位置及次数
        var str = '121234562';
        var index = str.indexOf(2);
        var num = 0;
        //console.log(index);
        while(index !== -1){
            console.log(index);
            num ++;
            index = str.indexOf('2',index + 1);
        }
        console.log('出现的次数:'+ num);

        //查找数组元素位置及个数
        var arr = ['red','bule','greed','pink','red','red','red'];
        var num = 0;
        var index = arr.indexOf('red');
        // console.log(index);
        while(index !== -1){
            console.log(index);
            num ++;
            index = arr.indexOf('red',index + 1);
        }
        console.log('出现的次数:'+ num);

        //根据位置返回字符
        //1.charAt(index)
        var str = 'a121234562';
        var newStr = '';
        // console.log(str.charAt(3));
        for(var i = 0; i < str.length; i++){
            // console.log(str.charAt(i));
            // index = str.charAt(i);
            newStr += str.charAt(i);
        }
        console.log(newStr);

        //charCodeAt(index) 返回相应索引号得字符ASCII值 判断用户按下哪个键
        console.log(str.charCodeAt(0));

        //str[index] H5新增  和charArt[index]同理
        console.log(str[0]);

        var str = 'a121234562';
        var newStr = '';
        for(var i = 0; i < str.length; i++){
            newStr += str[i];
        }
        console.log(newStr);

        //案例
        // 有一个对象 判断是否有属性 对象['属性名']
        var o = {
            age: 18,
        }
        if(o['sex']){
            console.log('里面有属性');
        }else{
            console.log('里面没有属性');
        }

        var str = 'fjisdghfiusdjjkhjhfjmbcjk';
        var max = {};
        for(var i = 0;i < str.length; i++){
            var chars = str.charAt(i);
            if(max[chars]){
                max[chars]++;
            }else{
                max[chars] = 1;
            }
        }
        console.log(max);
        //2.遍历对象
        var maxs = 0;
        var ch = '';
        for(var k in max){
            //k的是属性名
            //max[k]得到的是属性值
            if(max[k] > maxs){
                maxs = max[k];
                ch = k;
            }
        }
        console.log(maxs);
        console.log('最多的字符是' + ch);

        

        
    </script>
</head>
<body>
    
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值