字符串及数组对象方法

1.1 Math对象

  • 取整方式

    • parseInt():往下取整,有小数 就舍弃

    • Math.floor():往下取整,有小数 就舍弃

    • Math.ceil():往上取整,有小数就进位

    • Math.round():四舍五入取整

  • 随机数

    • Math.random() : 生成0-1之间的随机数,包括0,不包括1

    • min-max : parseInt(Math.random()*(max-min+1)+min)

      50-70
      parseInt(Math.random()*(70-50+1)+50)

1.2 Date对象

  • 倒计时

    • 创建一个未来时间,创建一个当前时间

    • 时间戳 = (未来时间 - 当前时间)/1000, 两个之间的毫秒数

    • 将时间差,转换为对应的天,小时,分钟,秒

2. 字符串对象

  • charAt

    • 语法:str.charAt(下标)

    • 作用:获取字符串中对应下标的字符

  • charCodeAt

    • 语法:str.charCodeAt(下标)

    • 作用:获取字符串中对应下标字符的编码

    • 判断是不是纯数字

  • ==indexOf==

    • 语法:str.indexOf(searchStr,start)

    • 作用:查找一个字符串在另一个字符串中首次出现的位置,出现返回对应的下标,没有返回-1

    • 使用场景:查找字符串中是不是有每个字符的存在 , 判断是不是小数(有没有小数点)

  • lastIndexOf

    • 语法:str.lastIndexOf(searchStr,start)

    • 作用:查找一个字符串在另一个字符串中最后一次出现的位置,出现返回对应的下标,没有返回-1,从后往前找

  • ==substring==

    • 语法:str.substring(start,end)

    • 作用:截取从start下标开始到end结束的一串连续的字符串,包括开始不包括结束

    • 参数

      • start:必需,开始截取的位置

      • end:可选,结束截取的位置,不包括结束,默认是str.length

  • ==slice==

    • 语法:str.slice(start,end)

    • 作用:截取从start下标开始到end结束的一串连续的字符串,包括开始不包括结束

    • 参数

      • start:必需,开始截取的位置

      • end:可选,结束截取的位置,不包括结束,默认是str.length

    • 区别

      • substring会自动调整大小位置,slice不会

      • substring负数默认为0,slice默认为倒数第几个

  • ==substr==

    • 语法:str.substr(start,length)

    • 作用:从start下标位置开始,截取几个

  • 大小写转换

    • 语法:str.toUpperCase() / str.toLowerCase();

    • 使用场景:不区分大小写的比较

      //A.大小写转换 str.toUpperCa    se()   str.toLowerCase();
      console.log(s1.toUpperCase()); //FDT3  转大写
      console.log(s1.toLowerCase()); //fdt3  转小写
      ​
      //不区分大小写验证
      console.log(s1.toLowerCase() == s2.toLowerCase());
  • ==replace==

    • 语法:str.replace(searchStr,replace)

    • 参数

      • searchStr:字符串中将要被替换掉的内容

      • replaceStr: 替换的内容

    • 注意:一次只能替换一个

      //B.str.replace(searchStr,replaceStr): 替换,一次只能替换一个
      //参数:
      //searchStr : 字符串将要被替换掉的内容
      //replaceStr: 替换的内容
      var str = "javauijavapython";
      var s = str.replace("java","web");
      s = s.replace("java","web");
      console.log(s); //webuiwebpython
  • ==split==

    • 语法:str.split(分割标识,length)

    • 作用:将字符串按特定标识分割成数组

      //str.split(分割标识,length) : 将字符串按特定的标识分割成数组
      var str = "2021-8-18";
      var arr = str.split("-");
      console.log(arr); //["2021", "8", "18"]
      ​
      var str = "web";
      console.log(str.split("")); //["w", "e", "b"]
  • ==字符串转json==

    • 有这样一个url:http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e,

      请写一段js程序提取url中各个get参数(参数名和参数个数不确定),将其key-value形式返回到一个json结构中,如{a:“1”,b:“2”,c:“”,d:“xxx”,e:undefined}

      get参数:?后面的内容

      var urlStr = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e";
      ​
      //1.获取get参数  a=1&b=2&c=&d=xxx&e
      //2.分割成一组一组的   ["a=1", "b=2", "c=", "d=xxx", "e"]
      //3.循环将数据一组一组添加到json
      ​
      var urlStr = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e";
      var json = {};
      //1.提取get参数  ?后面的内容
      //1.1 截取
      //var index = urlStr.indexOf("?");
      //urlStr = urlStr.substring(index+1);
      ​
      ​
      //1.2 分割,  按?分割,要后面的那份
      urlStr = urlStr.split("?")[1];
      console.log(urlStr); //a=1&b=2&c=&d=xxx&e
      ​
      ​
      //2.分割成一组一组的
      var urlArr = urlStr.split("&");
      console.log(urlArr); // ["a=1", "b=2", "c=", "d=xxx", "e"]
      ​
      //3.循环数组,一组一组的添加到json中
      for (var i = 0; i < urlArr.length; i++) {
          var a = urlArr[i].split("="); //["a","1"]
          json[a[0]] = a[1];
      }
      console.log(json);
  • trim

    • 语法:str.trim()

    • 作用:去除字符串首尾空格

      //D.str.trim() : 去除字符串首尾空格
      var str = "                 饿了,吃饭!               ";
      console.log(str);
      console.log(str.trim());

3.数组对象

3.1 创建数组对象

  • 字面量创建

    //1.字面量
    var arr1 = [1,2,3];
    console.log(arr1);
  • 关键字new创建

    //2.new关键字创建
    var arr2 = new Array("A","B","C");
    console.log(arr2);
    ​
    //参数只有一个并且是number类型,表示创建长度为n的空数组
    var arr3 = new Array(4);
    console.log(arr3); //[empty × 4]
  • 通过下标添加元素

    //3.添加数组元素
    var arr4 = [1,2,3];
    arr4[3] = 4;
    arr4[10] = 11;
    console.log(arr4); //(11) [1, 2, 3, 4, empty × 6, 11]

3.2 数据类型分类依据

  • 数据类型分类

    五大基本数据类型:数据结构单一,存储在栈区
                   typeof
    number         “number”    1213
    string         “string”    “rwr"
    boolean        “Boolean”    true
    undefined      “undefined”  undefined
    null           “object”     null
    复合数据类型:数据结构复杂,存储在堆区,变量中存储地址
    object         “object”      {}
    array          “object”      [任意数据类型,任意多个]
    function       “function”    任意代码
  • 数据类型存储

    数组拷贝

    var arr1 = [1,2,3];
    var arr2 = arr1;  //arr1的地址赋值给arr2 ,浅拷贝
    
    
    arr2[3] = 4;  //共用一块地址,会一改全改
    console.log(arr2); //(4) [1, 2, 3, 4]
    console.log(arr1); //(4) [1, 2, 3, 4]

3.3 数组方法--添加删除

数组的方法基本上都是在原数组上进行操作

3.3.1 push与pop

push、pop:在数组的末尾添加活删除数组元素 (数组栈方法)

  • push(items) : 在数组的末尾添加1个或多个元素,返回当前数组长度

    var arr = [1,2,3];
    arr.push(4);  //在数组末尾加元素
    var len = arr.push(5,6);
    console.log(arr,len); //[1, 2, 3, 4,5,6]  6
  • pop():在数组的末尾删除一个元素,返回被删除的元素

    var arr = [1,2,3];
    var del = arr.pop();
    arr.pop();
    console.log(arr,del); // [1, 2, 3, 4, 5]  6

3.3.2 unshift与shift

unshift,shift:在数组的头部添加活删除数组元素

  • unshift(items) : 在数组的头部添加1个或多个元素,返回当前数组长度

    //3.unshift(items) : 在数组的头部添加1个或多个元素,返回当前数组长度
    var arr = [1,2,3];
    arr.unshift("A");
    console.log(arr); //["A", 1, 2, 3]
  • shift():在数组的头部删除一个元素,返回被删除的元素

    //4.shift():在数组的头部删除一个元素,返回被删除的元素
    arr.shift();
    console.log(arr); //[1,2,3];

3.2.3 splice

  • 语法:splice(start,deleteCount,items) : 删除数组中连续的元素,返回被删除元素组成的数组

  • 参数:

    • start:必需,从start下标位置开始删除数组元素

    • deleteCount:可选,删除的个数,默认删除到最后

    • items:替换的内容

      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      
      //1. splice(start)  : 从下标为start开始删除,删除到末尾
      var delArray = arr.splice(2);
      console.log(arr);// [1, 2]
      console.log(delArray); // [3, 4, 5, 6, 7, 8]
      
      //2. splice(start,deleteCount)  : 从下标为start开始删除,删除几个
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      arr.splice(2, 3);
      console.log(arr); //[1, 2, 6, 7, 8]
      
      //3.splice(start,deleteCount,items):从下标为start开始删除,删除几个,用items替换被删除的元素
      var arr = [1, 2, 3, 4, 5, 6, 7, 8];
      arr.splice(2,2,"A","B","C");
      console.log(arr);
      
      //4.添加
      var arr = [1,3,5];
      arr.splice(2,0,4);
      console.log(arr); //[1, 3, 4, 5]

3.3.4 数组去重

  • 比较删除(建议使用)

    • 原理:

      拿第一个和后面所有的进行比较,如果重复,删除后面哪一个

    拿第二个和后面所有的进行比较,如果重复,删除后面哪一个

    ....

    for(var i = 0;i<arr.length;i++){
        for(var j = i+1;j<arr.length;j++){
            if(arr[i] == arr[j]) { //如果相等,删除后面的数组元素
                arr.splice(j,1);
                j--; //删除元素,后面的数组元素就会往前移动,对应的下标也需要改变
            }
        }
    }
    console.log(arr);
  • 比较存储

    • 原理

      声明一个空数组

      每一次添加之前,先去判断当前数组是否已经存在这个元素,如果没有再添加

      var arr = [1,6,9,1,4,7,1,2,8,4,5,6,9,2,3,5,4,3,3,3,3,3,3,3];
      var arrs = [];
      for(var i = 0;i<arr.length;i++){
          if(arrs.indexOf(arr[i]) == -1){ //当前数组中没有这个元素
              arrs.push(arr[i]);  //添加到数组中
          }
      }

3.4 数组排序

3.4.1 排序算法

原理:

拿第一个和后面所有的进行比较,如果后面有比当前值小的,交换位置

拿第二个和后面所有的进行比较,如果后面有比当前值小的,交换位置

.....

依次类推

var arr = [1, 8, 6, 5, 4, 7, 3, 9, 2];
for (var i = 0; i < arr.length; i++) {
    for (var j = i + 1; j < arr.length; j++) {
        if (arr[i] < arr[j]) { //如果后面有比当前值小的,交换位置
            var temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
}

2.4.2 冒泡排序算法

  • 原理:相邻的两个进行比较,如果前面的比后面的大,交换位置

    var arr = [1, 8, 6, 5, 4, 7, 3, 9, 2];
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr.length-1-i; j++) {
            if (arr[j] > arr[j + 1]) { 
                var temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    

2.4.3 排序方法

  • 基本使用

    //1.sort():排序方法
    var arr = [11, 8, 6, 5, 4, 7, 3, 9, 2];
    arr.sort(); //默认以字符串比较方式排序
    console.log(arr);//[11, 2, 3, 4, 5, 6, 7, 8, 9]
    
    
    //2.number比较方式
    arr.sort(function(a,b){ //a,b相邻的两个数组元素
        return a - b;  // 从小到大    如果返回值大于0就交换位置
        //return b - a;  // 从大到小
    });
    console.log(arr); // [2, 3, 4, 5, 6, 7, 8, 9, 11]
  • 数组中对象排序

    //3.按年龄进行降序排序(从大到小)
    var students = [
        {"name":"桑亚西","age":24,"date":"1997-7-7"},
        {"name":"田晴","age":18,"date":"2003-12-12"},
        {"name":"崔雨彤","age":20,"date":"2001-1-1"},
        {"name":"陈兰彬","age":22,"date":"1999-9-9"},
        {"name":"张环宇","age":24,"date":"1997-9-9"}
    ]
    students.sort(function(a,b){ //a = {"name":"桑亚西","age":24,"date":"1997-7-7"}
        return b.age - a.age;
    })
    console.log(students);
  • 按日期排序

    //4.如果年龄一样的,按出生日期降序排序
    students.sort(function(a,b){
        if(b.age == a.age){
            return new Date(b.date) - new Date(a.date);
        }else{
            return b.age - a.age;
        }   
    });
    console.log(students);
    //时间 ----  创建成时间对象
    console.log(new Date("1997-7-7") - new Date("1997-9-9"));
    //时间 ----  将字符串格式的时间转换为时间戳
    console.log(Date.parse("1997-7-7")); //868204800000
  • 按中文排序

     //5.按姓名进行升序排序
    students.sort(function(a,b){
        //按当前计算机的编码格式进行比较   
        return a.name.localeCompare(b.name);
    })
    console.log(students);
  • 随机排序

    //6.随机排序
    var arr = [1,2,3,4,5,6,7];
    arr.sort(function(){
        return Math.random() - 0.5; 
    });
    console.log(arr);

3.5 数组的小方法

  • arr.slice(start,end):截取数组中连续的一串元素组成新的数组返回

    //1.arr.slice(start,end) :截取数组中连续的一串元素组成一个新的数组返回
    var arr = [1,2,3,4,5,6,7];
    var a = arr.slice(2,5);
    console.log(a); //[3, 4, 5]
  • arr.indexOf(search):

    //2.arr.indexOf(search) : 查找一个元素在数组中首次出现的位置,出现返回对应的下标,不出现返回-1
    var index = arr.indexOf(4);
    console.log(index); //3  下标从0开始
  • arr.join(组合标志):将数组按特定标识组合成字符串

    //3.arr.join(组合标志) :将数组按特定的标志组合成字符串 
    var arr = [2021,8,18]; 
    console.log(arr.join("-")); //2021-8-18 
    console.log(arr.join("")); //2021818 
    console.log(arr.join()); //2021,8,18
  • arr.reverse():倒序

    //4.arr.reverse() : 倒序
    var arr = [1,2,3,4,5];
    arr.reverse();
    console.log(arr); //[5, 4, 3, 2, 1]
  • arr.concat():将多个数组或元素组成一个新的数组返回

    //5.arr.concat(arr1,arr2,....):将多个数组或元素组合成一个数组返回 
    var arr1 = [1,2,3]; 
    var arr2 = ["a","b","c"]; 
    var newArr = arr1.concat(arr2,"d"); 
    console.log(newArr); //[1, 2, 3, "a", "b", "c", "d"]
    

3.6 数组的迭代方法(IE8不兼容)

  • 循环:for多次执行重复代码

  • 遍历:for-in 根据数据规律去获取数据

  • 迭代:根据数据规律执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值