js基础第六天

实现系统的Max的方法
function Math() {
        this.getMax = function() {
            var max = arguments[0];
            for (var i = 0; i < arguments[i]; i++) {
                if (max < arguments[i]) {
                    max = arguments[i];
                }
            }
            return max;
        }
    }
    var mt = new Math();
    max = mt.getMax(10, 50, 80, 90);
    console.log(max);
Date
//    var dt=new Date();
    //    //当前的时间---当前的服务器
    //    console.log(dt);

这个输出的是当前时间

var dt = new Date(“2017/12/8”);

var dt = new Date(“2017-12-8”);

有传入时间那么输出的就是传入的时间类型

获取当前时间对象  毫秒
// var dt = Date.now();
    // console.log(dt);

    //    var dt = new Date();
    //
    //    //获取年份
    //    console.log(dt.getFullYear());
    //    //获取月份
    //    console.log(dt.getMonth()+1);//是0开始的 真实的月份是需要加1的
    //    //获取日期
    //    console.log(dt.getDate());
    //    //获取小时
    //    console.log(dt.getHours());
    //    //获取分钟
    //    console.log(dt.getMinutes());
    //    //获取秒
    //    console.log(dt.getSeconds());
    //
    //    //获取星期
    //    console.log(dt.getDay());//星期从0开始的


    // var dt=new Date();

    //console.log(dt.toDateString());//英文的---日期
    //console.log(dt.toLocaleDateString());//数字格式--日期

    //    console.log(dt.toTimeString());//小时分钟秒
    //    console.log(dt.toLocaleTimeString());//小时分钟秒

    //console.log(dt.valueOf());//毫秒值
    //    console.log(dt);
    //    //转成字符串
    //    console.log(dt.toString());

    //    var num=10;
    //    console.log(num.toString());
Date总结
   //var dt=new Date();
//    var dt=+new Date();//一种特殊的写法,只适用于这个Date的对象
//    console.log(dt);

//    dt.getFullYear();//年
//    dt.getMonth();//月---从0开始
//    dt.getDate();//日
//    dt.getHours();//小时
//    dt.getMinutes();//分钟
//    dt.getSeconds();//秒
//    dt.getDay();//星期---从0开始
//    dt.toDateString();//日期
//    dt.toLocaleDateString();//日期
//    dt.toTimeString();//时间
//    dt.toLocaleTimeString();//时间
//    dt.valueOf();//毫秒

console.log(dt.toLocaleDateString());得到的是一个数字类型的日期 2019/2/5

console.log(dt.toTimeString()); 10:29:38 小时 分 秒

console.log(dt.toLocaleTimeString()); //小时分钟秒 上午10:30:27

获取指定格式日期的函数
/**
 * Created by Administrator on 2017-09-13.
 */
//格式化后的指定格式的日期和时间---封装一个函数

/**
 * 获取指定格式的时间
 * @param dt 日期的对象
 * @returns {string} 返回的是字符串的日期时间
 */
function getDate(dt) {
    //获取年
    var year = dt.getFullYear();
    //获取月
    var month = dt.getMonth() + 1;
    //获取日
    var day = dt.getDate();
    //获取小时
    var hour = dt.getHours();
    //获取分钟
    var minute = dt.getMinutes();
    //获取秒
    var second = dt.getSeconds();
    month = month < 10 ? "0" + month : month;
    day = day < 10 ? "0" + day : day;
    hour = hour < 10 ? "0" + hour : hour;
    minute = minute < 10 ? "0" + minute : minute;
    second = second < 10 ? "0" + second : second;
    return year + "年" + month + "月" + day + "日 " + hour + ":" + minute + ":" + second;
}
String 字符串
     * 实例方法---->必须要通过new的方式创建的对象(实例对象)来调用的方法
     * 静态方法---->直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调用的)
     *
     * */
    /*
     *
     * 字符串的常用属性:
     * .length------>字符串的长度
     * .charAt(索引),返回值是指定索引位置的字符串,超出索引,结果是空字符串
     * .fromCharCode(数字值,可以是多个参数),返回的是ASCII码对应的值
     * .concat(字符串1,字符串2,...);返回的是拼接之后的新的字符串
     * .indexOf(要找的字符串,从某个位置开始的索引);返回的是这个字符串的索引值,没找到则返回-1
     * .lastIndexOf(要找的字符串);从后向前找,但是索引仍然是从左向右的方式,找不到则返回-1
     * .replace("原来的字符串","新的字符串");用来替换字符串的
     * .slice(开始的索引,结束的索引); 从索引5的位置开始提取,到索引为10的前一个结束,没有10,并返回这个提取后的字符串
     * .split("要干掉的字符串",切割后留下的个数);切割字符串
     * .substr(开始的位置,个数);返回的是截取后的新的字符串
     * .substring(开始的索引,结束的索引),返回截取后的字符串,不包含结束的索引的字符串
     * .toLocaleLowerCase();转小写
     * .toLowerCase();转小写
     * .toLocaleUpperCase()转大写
     * .toUpperCase();转大写
     * .trim();干掉字符串两端的空格

命名函数

function f1(){

}

构造函数

function Person(){

}

string 字符串类型 基本类型 小写得s

String 字符串类型 引用类型 大写得S

大写S String 字符串对象 构造函数

js没有字符类型 int num = 10;

js都用 var 字符串 用 “” 或者 ‘’

字符串不可变性
 var str = "hello";
 str[1] = "W";
 console.log(str);
 输出得结果是  hello  只读

通过索引 改变字符串里面得值 是不能改变得 重新赋值可以改变

但是只是指向发生改变

字符串当作数组 循环遍历输出
 var str = "hello";
    for (var i = 0; i < str.length; i++) {
        console.log(str[i]);
    }
字符串的相关方法

#####charAt 返回的是指定索引的字符串 超出索引,结果是空字符串

  var str = "what";
    var b = str.charAt(2);
    console.log(b);
    输出的是 索引为2  的a
静态方法 案例

String.formCharCode(10,20) 返回的unicode码 不能通过str对象点出来

unicode码和Ascii码相反 一个返回字母 一个数字

字符串拼接 concat
str = "123";
    str1 = "456";

 console.log(str.concat(str1));

concat 可以传入多个参数 返回的是新的字符串

indexOf 方法 相当于查找一个字符串的索引 没找到 则返回 - 1
var str = "你好帅啊";
console.log(str.indexOf("帅"));

返回数字 2; 有重复的数字 则返回第一个找到符合的索引

第一个参数是 想要的字符串 第二个参数是 指定从某个位置开始找 包括这个指定位置

#####lastIndexOf 是从后面往前找 从右到左 但是返回的索引 正确

var str = "你好帅啊素帅";
console.log(str.lastIndexOf("帅"));
输出的也是5
索引仍然是从左往右找

用法 和 indexOf 差不多 但是只有一个参数

#####正则匹配

str.match(regexp);

replace替换
 var str = "xiaoshu好书";
 console.log(str.replace("书", "帅"));
slice方法 截取 不包含结束位置

提取字符串的一部分,并返回一个新的字符串

两个参数 第一个参数 截取的起始位置 第一个参数 结束位置 不包含结束的位置

var str = "如果有一台你,计算机视觉就";
    str = str.slice(2, 6);
    console.log(str);
split() 字符串的切割
var str = "乔峰|慕容|凤姐|梅超风|小苏|大蛇丸";
var arr = str.split("|"); 
console.log(arr);

按 | 切割 切割后 变成了一个数组 | 就不存在了

substr方法 截取

一个参数代表 从某个位置开始截取 比如3 包括3这个位置

两个参数代表 某个位置 然后 截取几个的意思

substring 截取 不包含结束

两个参数 从拿开是截取到哪里结束 不包含结束索引的字符串

var str = "哈哈哈,真的好帅";
console.log(str.substring(5, 6));
tolocaleLowerCase 转换为小写 toLowerCase
 var str = "HELLO";
 console.log(str.toLocaleLowerCase());
toUpperCase toLocaleUpperCase 转大写
trim 去掉空字符串 干掉两边的空白符

只能去掉左边的

trimLeft 去掉左边

trimRight 去掉右边

var str = "   hello  pp";
console.log(str.replace(/\s/g, ""));

这个可以去掉所有的空白符

字符串案例 输出 o 出现所有位置的索引
var str2 = "hello wod odd ott fbo nhyo";
    var index = 0;
    var key = "o";
    while ((index = str2.indexOf(key, index)) != -1) {
        console.log(index);
        index += key.length;
    }

  console.log(index);
  key.length 比如要找的是一个o 则长度为1  如果  要找“您好”  则长度为2   意思找到了  就跳过这两个
案例3:找到这个字符串中每个字符串出现了多少次

结果是知道每个字母出现了多少次

// //案例3:找到这个字符串中每个字符串出现了多少次
    // var str3 = "whatOareYyouYnoYshaHleiHoHmyHgod";
    // //第一步:把所有的字母全部变成小写
    // str3 = str3.toLocaleLowerCase();
    // //第二步:创建一个空对象,目的:把字母作为键,次数作为值
    // var obj = {};
    // //第三步,遍历字符串,获取每个字母
    // for (var i = 0; i < str3.length; i++) {
    //   //判断obj这个对象中有没有这个字母(字母---键)
    //   var key = str3[i];//每个字母
    //   if (obj[key]) {//判断obj中有没有这个键
    //     //对象中有这个字母了
    //     obj[key]++;
    //   } else {
    //     //对象中没有这个字母,那就把字母加到对象中,并且给这个字母一个出现的次数,默认1次
    //     obj[key] = 1;
    //   }
    // }
    
    // //遍历对象,显示每个字母的次数
    // for(var key in obj){
    //   console.log(key+"这个字母出现了"+obj[key]+"次");
    // }
    // //创建新的对象---空对象---没有属性,也没有方法

var key = str3[i];//每个字母 返回的是每个字符串 不是数组

var arr = str.split("|"); 切割返回的是数组

理解 当第一次if的时候 obj是空的 所以是obj[key] = 1 ;在循环的时候 有这个数字了 就开始obj

[key]++了 这时是一个数字可以相加了

扩展案例 做一下

typeof str 返回时类型 判断属于哪一个类型

instanceOf 返回的true或者false

####Array

判断传入的值是否时array
Array.isArray([10,20,30]);

arr = [10, 20, 30];

    console.log(Array.isArray(arr));

返回的时true或者false

Array.from 将一个数组赋予另外一个数组
var arr = ["a", "b", "c"];
var newArr = Array.from(arr);
console.log(newArr);
拼接数组 concat
var arr = [10, 20, 30];
var arr2 = [10, 20, 30, 40];
var arr = arr.concat(arr2);
console.log(arr);
arr.every() 可以用来帅选
var arr = [100,200,300];
arr.every(function (ele,index){
    return ele > 2000; //数组的每个元素都大于2000
})
a代表元素的值  b 代表元素的索引

返回值时 boolean值

如果数组每个元素都符合条件 则返回true

filter 返回符合条件元素
var arr = [10, 20, 30, 40, 50, 60, 70];
newArr = arr.filter(function(ele, index, array) {
    return ele > 40;
})
 console.log(newArr);

返回的值时一个新的数组 参数按需传入就可以了

过滤掉元素里面的0 元素 也可以使用这种方法

push() 追加一个元素到数组的最后面 返回值是追加数据之后的数组长度
var arr = [10, 20, 30, 40, 50, 60, 70];
arr.push(100);
console.log(arr);
pop() 删除数组的最后一个元素 返回值就是删除的这个值
var arr = [10, 20, 30, 40, 50, 60, 70];
arr.pop();
console.log(arr);

#####shift()删除数组中的第一个元素 返回值就是删除的这个值

unshift()插入一个新元素到数组的第一个元素 返回值就是插入后的程度

#####arr.forEach()循环 相当于for循环

var arr = [10, 20, 30, 40, 50, 60, 70];
    arr.forEach(function(ele, index) {
        console.log(ele + "====" + index);
})

在ie8里用过不了 可以在MDN官方文档里面查找相关的文档

#####indexOf查找索引 和string里面的indexOf差不多

join方法 返回的是一个字符串 和字符串里面的split相反

将数组 以某种方式进行进行合并成字符串

var arr = [10, 20, 30, 40, 50, 60, 70];
var str = arr.join("|");
//join("字符串");
console.log(str);
map方法
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
console.log(roots);

map方法让numbers里面的元素都运用 了 Math.sqrt;方法

数组调用 就不用加(),也可以直接 Math.sqrt(9)直接传入某个数字

数组的反转 reverse()
var arr = [10, 20, 20, 30, 50];
arr.reverse();
console.log(arr);
sort 方法 进行排序 不稳定
var arr = [10, 20, 20, 30, 50];
arr.sort();
console.log(arr);

稳定版

    arr.sort(function (a,b) {
         if(a>b){
           return 1;
         }else if(a==b){
           return 0;
         }else{
           return -1;
         }
       });
       console.log(arr);

#####slice方法 从开始到结束 不包括结束 截取

var arr = [10, 20, 30, 40, 50];
var arr = arr.slice(1, 3); 
console.log(arr);
splice方法

在元素的具体某个位置插入元素

var arr = [10, 20, 30, 40, 50];
arr.splice(2, 0, "drum");
console.log(arr);
//第一个参数  索引  第二个 参数 0 代表 不删除原来的元素  插入新的元素
// 第二个参数 如果是1 则干掉原来的元素
//第二个参数 代表要删除的元素   
替换  删除  插入

#####基本包装类型

普通变量不能直接调用或者属性方法

对象可以直接调用属性和方法

//基本包装类型:本身是基本类型,但是在执行代码的过程中,如果这种类型的变量调用了属性或者是方法,那么这种类型就不再是基本类型了,而是基本包装类型,这个变量也不是普通的变量了,而是基本包装类型对象

对象&&true 那么结果就是 true

true&&对象 那么结果就是对象

//    var num=10;
//    var num2=Number("10");//转换,没有new---类型转换  
//    var num3=new Number("10");//基本包装类型

删除数组中重复的元素
Array.prototype.strip = function() {
        if (this.length < 2) return [this[0]] || [];
        var arr = [];
        for (var i = 0; i < this.length; i++) {
            arr.push(this.splice(i--, 1));
            for (var j = 0; j < this.length; j++) {
                if (this[j] == arr[arr.length - 1]) {
                    this.splice(j--, 1);
                }
            }
        }
        return arr;
    }
    var arr = ["abc", 85, "abc", 85, 8, 8, 1, 2, 5, 4, 7, 8];
    alert(arr.strip());
数组总结
* Array.isArray(对象)---->判断这个对象是不是数组
     * instanceof关键字
     * .concat(数组,数组,数组,...) 组合一个新的数组
     * .every(函数)--返回值是布尔类型,函数作为参数使用,函数中有三个参数,第一个参数是元素的值,第二个参数是索引值,第三个参数是原来的数组(没用)
     * 如果这个数组中的每个元素的值都符合条件,最后才返回的是true
     *
     * .filter(函数);返回的是数组中每一个元素都复合条件的元素,组成了一个新的数组
     *
     * .push(值);--->把值追加到数组中,加到最后了---返回值也是追加数据之后的数组长度
     * .pop();--->删除数组中最后一个元素,返回值就是删除的这个值
     * .shift();--->删除数组中第一个元素,返回值就是删除的这个值
     * .unshift();--->向数组的第一个元素前面插入一个新的元素,----返回值是插入后的程度
     * .forEach(函数)方法---遍历数组用---相当于for循环
     * .indexOf(元素值);返回的是索引,没有则是-1
     * .join("字符串");----返回的是一个字符串
     * .map(函数);--->数组中的每个元素都要执行这个函数,把执行后的结果重新的全部的放在一个新的数组中
     * .reverse();----->反转数组
     * .sort();---排序的,可能不稳定,如果不稳定,请写MDN中的那个固定的代码
     * .arr.slice(开始的索引,结束的索引);把截取的数组的值放在一个新的数组中,但是不包含结束的索引对应的元素值
     * .splice(开始的位置,要删除的个数,替换的元素的值);一般是用于删除数组中的元素,或者是替换元素,或者是插入元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值