js数组方法

数组方法

1.字符串方法

  • 通过下标获取

    • charAt(下标):获取对应下标的字符
    • charCodeAt(下标):获取对应下标的字符编码 “0”–48 “a”–97 “A”–65
  • 检索位置,查找是否存在

    • indexOf(searchValue,start):查询某个字符在另一个字符串中首次出现的位置,出现返回对应的下标,没有出现返回-1; 作用:判断字符串中是否某个特定字符的存在
    • lastIndexOf(searchValue,start):查询某个字符在另一个字符串中最后一次出现的位置,出现返回对应的下标,没有出现返回-1; 从后往前找
  • 截取

    • substring(start,end):从start开始截取到end,包括开始不包括end,负数为0
    • slice(start,end):从start开始截取到end,包括开始不包括end,负数为倒数
    • substr(star,length):从start开始,截取几个
  • 替换

    • replace(searchValue,replaceValue):替换,一次只能换一个
  • 大小写转换 不区分大小写比较

    • toUpperCase():转大写

    • toLowerCase():转小写

       var s1 = "aArT5";
      var s2 = "aart5";
      console.log(s1==s2); //false 一位一位比较,比较的是编码
      
      //转换为大写:toUpperCase();
      console.log(s1.toUpperCase()); //AART5
      
      //转换为小写:toLowerCase();
      console.log(s1.toLowerCase());//aart5
      
      //不区分大小写比较  比较的时候转换为一样的(小写,大写)
      console.log(s1.toLowerCase()==s2.toLowerCase());//true
      
  • 分割

    • split(splitter,length):按分割标记,将字符串分割成数组

       var date = "2020-12-23";
      var arr = date.split("-");
      console.log(arr); // ["2020", "12", "23"]
      
      var str = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e";
      console.log(str.substring(str.indexOf("?")+1));
      console.log(str.split("?")[1]);
      
  • 去除空格

    • trim():去除首尾空格

    • trimLeft():去除左空格

    • trimRight():去除右空格

      //11.trim() : 去除字符串首尾空格
      var str="                     hello world               ";
      console.log("|"+str+"|");
      console.log("|"+str.trim()+"|");
      console.log("|"+str.trimLeft()+"|");
      console.log("|"+str.trimRight()+"|");
      
  • 常用的字符串方法

    • charAt()
    • indexOf()
    • 截取 substring,substr,slice
    • replace
    • split
  • 高频面试题

    • 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}
    操作json(对象)
     var obj = {
         "name":"web"
     }
     console.log(obj.name); //对象.属性名
    obj.age = 10;//赋值  对象.属性名(key) = 属性值(value)
    

    实现

    var str = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e";
    var json = {};
    
    //1.获取get参数(?号后面的)
    str = str.split("?")[1];
    console.log(str); //a=1&b=2&c=&d=xxx&e
    
    //2.将联系的一段get参数分割成一对一对
    var arr = str.split("&");
    console.log(arr); //["a=1", "b=2", "c=", "d=xxx", "e"]
    
    //3.将数组中的每一组数据,分割开,分别作为json的key和value
    for (var i = 0; i < arr.length; i++) {
        var a = arr[i].split("="); //["a",1]
        json[a[0]] = a[1];
    }
    console.log(json);
    
    

2.数组对象

2.1 创建数组

 //1.字面量创建
var arr1 = [1,2,3,4,5];

//2.关键字new创建
var arr2 = new Array("A","b","C","d","e");
console.log(arr1,arr2);

//3.如果创建的时候参数只有一个并且是number类型,创建长度为n的空数组
var arr3 = new Array(5);
console.log(arr3,arr3[0]); //undefined

//4.length  获取数组的长度
console.log(arr3.length); //5

//5.存储  可以通过下标存储
var arr4 = [];
arr4[0] = 1;
arr4[10] = 10;
console.log(arr4);  // [1, empty × 9, 10]

//5.可以通过键值对存储,不计算在长度中
arr4.name = "web";
console.log(arr4);
console.log(arr4.name);

2.2 数组栈方法(头部、末尾添加删除元素)

//数组的方法基本上都在原数组的进行操作
//1.push,pop在数组的末尾添加或删除元素
var arr = [1,2,3];

//push(items):在数组的末尾添加一个或多个元素,返回当前数组的长度
arr.push(4,5);
console.log(arr); // [1, 2, 3, 4,5]

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


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

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

2.3 数组方法

  • indexOf():找一个元素在数组首次出现的位置,出现返回对应的下标,不出现返回-1

  • splice(start,deleteCount,items):删除数组中的一组元素,使用items进行替换,返回被删除元素组成的数组

    参数

    • start:开始删除的下标,默认为0
    • deleteCount:可选的,默认删除到最后
    • items:可选,用于替换的元素
    //1.删除
    var arr = [1,2,3,4,5];
    var delArr = arr.splice(2); //从下标为2的位置开始删除,删除到最后
    console.log(arr); //[1,2]
    console.log(delArr); // [3, 4, 5]  被删除元素组成数组
    
    //从下标为2的位置开始删除2个
    var arr = [1,2,3,4,5];
    arr.splice(2,2); 
    console.log(arr); // [1, 2, 5]
    
    //2.替换 先删除选中的元素,再用items进行替换
    var arr = [89,45,67,23];
    arr.splice(1,1,54,56,67,78);
    console.log(arr);
    
    //3.添加
    var arr = [1,2,5,6];
    var n = 4;
    arr.splice(2,0,n);
    console.log(arr); // [1, 2, 4, 5, 6]
    
  • concat():组合数组,将多个数组组合成一个,返回一个组合好的数组

     var arr1 = [1,2,3];
    var arr2 = ["a","b","c"];
    var arr3 = arr1.concat(arr2,"难");
    console.log(arr3); //[1, 2, 3, "a", "b", "c", "难"]
    
  • slice(start,end):截取数组中的一段元素

    //2.slice(start,end):截取数组中的一段元素
    var sArr = arr3.slice(3,5);
    console.log(sArr); // ["a", "b"]
    
  • indexOf():查找数组中某个元素首次出现的位置,出现返回下标,没有返回-1

    //4.indexOf():查找数组中某个元素首次出现的位置,出现返回下标,没有返回-1
    var arr = [1,2,3,4,5,6];
    var index = arr.indexOf(4);
    console.log(index);//3
    
  • reverse() 倒序

    var arr = [1,2,3,4];
    arr.reverse();
    console.log(arr); //[4, 3, 2, 1]
    

2.4 数组排序

2.4.1 选择排序
//1.选择排序 ,拿第一个和后面所有的进行比较,如果前面比较大,交换位置
var arr = [6, 3, 9, 2, 7, 4, 8, 5, 1];
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;
        }
    }
}
console.log(arr);
2.4.2 冒泡排序
//2.冒泡排序,相邻的两个比较
var arr = [6, 3, 9, 2, 7, 4, 8, 5, 1];
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;
        }
    }
}
console.log(arr);
2.4.3 快速排序
//3.快排 : 取中间值,声明两个空数组,比较小放前面,大的放后面
var arr = [6, 3, 9, 2, 7, 4, 8, 5, 1];
function quickSort(arr){
    //5.递归结束条件
    if(arr.length<=1) return arr;
    //1.取中间值(从数组中删除)
    var middle = arr.splice(parseInt(arr.length/2),1)[0];

    //2.声明两个空数组
    var left = [],right=[];

    //3.比较小放前面,大的放后面
    for(var i = 0;i<arr.length;i++){
        if(middle>arr[i]){
            left.push(arr[i]);
        }else{
            right.push(arr[i]);
        }
    }

    //4.组合数组
    return quickSort(left).concat(middle,quickSort(right));
}
2.4.4 排序方法
//1.默认情况下,按字符串排序
var arr = [6, 3, 9, 21, 7, 4, 8, 5, 11];
arr.sort();
console.log(arr); //[11, 21, 3, 4, 5, 6, 7, 8, 9]
  • 按number排序

    //2.按number排序
    arr.sort(function(a,b){//a,b是两个相邻的数组元素
        //return a-b;  //a-b>0换位置  从小到大
        return b-a; //从大到小
    });
    console.log(arr); //[3, 4, 5, 6, 7, 8, 9, 11, 21]
    
  • 对象排序

    //3.按年龄排序 (升序)(number)
    var student = [
        {"name":"羊振疼","age":80,"date":"1940-12-12","c":89},
        {"name":"张振","age":81,"date":"1939-12-12","c":100},
        {"name":"马杰伦","age":18,"date":"2002-1-1","c":30},
        {"name":"安德华","age":18,"date":"2002-11-3","c":70},
    ];
     student.sort(function(a,b){ 
         //a={"name":"羊振疼","age":80,"date":"1940-12-12","c":89}
         //b={"name":"张振","age":81,"date":"1939-12-12","c":100}
         return a.age-b.age;
     });
    
  • 按时间排序

    //3.如果年龄一样,按出生日期的降序排序
    student.sort(function(a,b){
        if(a.age == b.age){
            return new Date(b.date)-new Date(a.date);
        }else{
            return a.age - b.age;
        }
    })
    console.log(student);
    console.log(Date.parse("2002-1-1")); //将字符串格式的时间,转换为时间戳
    console.log(new Date("2002-1-1")-new Date("2002-11-3"));
    
  • 按中文排序

    //4.按名字升序排序
    student.sort(function(a,b){
        //localeCompare:按当前本地的格式进行比较
        return a.name.localeCompare(b.name)
    });
    console.log(student);
    
  • 随机排序

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

push,pop,splice,sort()(算法+方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值