js数组和字符串操作

1.字符串操作

//1.1 charAt 返回指定索引位置的字符
    var str = 'abc';
    console.log(str.charAt(1));//h

//1.2 charCodeAt返回指定索引位置的字符的Unicode值
    var str = 'abc';
    console.log(str.charCodeAt(1));//98

//1.3 concat 连接两个或多个字符串,返回连接后的字符串 tip:数组也可以使用这个方法
    var str = 'abc';
    var s = 'def'
    console.log(str.concat(s));// 'abcdef'
    
    //数组方法
    var str = [1,2];
    var s = [2,3,4];
    console.log(str.concat(s));//  [1, 2, 2, 3, 4]

//1.4 fromCharCode 将Unicode转为字符串 是String对象的静态方法 只能由String对象使用
    console.log(String.fromCharCode(98,97));//'ba'

//1.5 indexOf 返回字符串中检索指定字符串第一次出现的位置 如果没有则为-1,数组也能使用这个方法
    var str = 'abc';
    var arr = ['a','b','c'];
    console.log(str.indexOf('a'));//0
    console.log(arr.indexOf('b'));//1

//1.6 lastIndexOf 和indexOf相反,返回字符串检索指定字符最后一次出现的位置

//1.7 localeCompare 用本地特定的顺序来比较两个字符串 在排序中常用,例如地名按照字母排序

//1.8 match 找到一个或多个正则表达式的匹配,类似indexOf和lastIndexOf,不过该方法返回的是值,而不是位置
    var str="1 plus 2 equal 3";
    console.log(str.match(/\d+/g));//['1', '2', '3']
   

  

//1.9 replace,replaceAll 替换与正则表达式匹配的子串,前一个只会取代第一个,后一个取代所有,当replace的正则出现全局匹配g,那么此时他相等于replaceAll
    var str="Hello world!";
    console.log(str.replace('l',0));// 'He0lo world!'

//1.10 search 检索与正则表达式相匹配的值,返回第一个与值匹配的子串的起始位置,如没有子串则返回-1,类似indexOf,不过它的参数支持正则表达式或者子串
    var str="Visit W3School!";
    console.log(str.search(/W3School/));//6

//1.11 slice 提取字符串中的片段,并在新的字符串中返回被提取的部分,该方法可以适用于数组
    var str="Visit W3School!";
    var arr = [1,2,3,4,5,6];
    console.log(str.slice(3));//it W3School!
    console.log(arr.slice(3));//[4, 5, 6]

//1.12 split 将字符串分割为子字符串数组

//1.13 substr 从起始索引号提取字符串中指定数目的字符
    var str="Visit W3School!";
    console.log(str.substr(3,1));// i

//1.14 substring 提取字符串中两个指定的索引号之间的字符,类似于slice
    var str="Visit W3School!";
    console.log(str.substring(3));// it W3School!

//1.15 toLocaleLowerCase,toLocaleUpperCase 根据主机的语言环境切换字符串大小写

//1.16 toLowerCase,toUpperCase 切换字符串大小写

//1.17 toString 返回字符串对象值

//1.18 trim 去掉字符串首尾空白

//1.19 valueOf 返回某个字符串对象的原始值

2. 数组操作      

//2.1 concat 合并数组,并返回合并之后的数据,字符串也可以使用该方法
    var arr1 = [1,2,3]
    var arr2 = arr1.concat();
    console.log(arr1);           //[1,2,3]---原数组
    console.log(arr1 === arr2);  //false
    console.log(arr2);           //[1,2,3]---原数组的副本

//2.2 join 使用分隔符,将数组转为字符串并返回,和字符串的split方法相反

//2.3 pop 删除最后一位,并返回删除的数据

//2.4 shift 删除第一位,并返回删除的数据

//2.5 unshift 在第一位新增一位或多位数据,返回长度
    var arr = [1,2,3];
    console.log(arr.unshift("hello"));  //4 代表新数组的长度为4
    console.log(arr);                   //["hello",1,2,3]---原数组改变

//2.6 push 在最后一位新增一个或多个数据,返回长度

//2.7 reverse 反转数组,返回结果。会改变原数组
    var arr = [1,2,3];
    console.log(arr.reverse());     //[3,2,1]
    console.log(arr);               //[3,2,1]---原数组改变
    
//2.8 slice 截取指定位置的数组,并返回,不包含结束位置。字符串也可以使用该方法
    var arr = ["1","2","3","4","5"];
    console.log(arr.slice(1,3));        //["3","4"]

//2.9 splice(start,num,data1,data2,...) 向数组中添加,或从数组删除,或替换数组中的元素,然后返回被删除/替换的元素

    var arr = ["1","2","3","4","5"];
    //2.9.1 不传参时:无操作
    console.log(arr.splice());      //[]
    console.log(arr);               //["1","2","3","4","5"]---无操作

    //2.9.2 只传入start:表示从索引为start的数据开始删除,直到数组结束
    console.log(arr.splice(2));     //["3", "4", "5"]
    console.log(arr);               //["1", "2"]---原数组改变

    //2.9.3 传入start和num:表示从索引为start的数据开始删除,删除num个 
    console.log(arr.splice(2,2));   //["3", "4"]
    console.log(arr);               //["1", "2", "5"]---原数组改变

    //2.9.4 传入更多:表示从索引为start的数据开始删除,删除num个,并将第三个参数及后面所有参数,插入到start的位置
    console.log(arr.splice(2,2,"a","b"));  //["3", "4"]
    console.log(arr);                      //["1", "2", "a", "b", "5"]---原数组改变

    //2.9.5 传入更多:表示从索引为start的数据开始删除,删除num个,并将第三个参数及后面所有参数,插入到start的位置  
    console.log(arr.splice(2,0,"a","b"));  //[]
    console.log(arr);    //["1", "2", "a", "b", "3", "4", "5"]---原数组改变

//2.10 sort 排序,返回结果。默认升序,如果操作字符串并希望按照预期结果那么需要在sort参数重新书写排序规则。
    var arr = [6,1,5,2,3];
    console.log(arr.sort());    //[1, 2, 3, 5, 6]
    console.log(arr);           //[1, 2, 3, 5, 6]---原数组改变

//2.11 toString 直接转为字符串并返回

//2.12 valueOf 返回数组对象的原始值

//2.13 indexOf,lastIndexOf 返回数组索引,一个是从前往后检索,一个是从后往前检索,和字符串操作类似。

//2.14 forEach 参数为回调函数,会遍历数组所有的项,回调函数接收三个参数,分别是vlaue,index,self,没有返回值

//2.15 map同forEach,参数同forEach,会返回由回调函数操作后的新数组

//2.16 filter,筛选数组,参数同forEach。返回回调函数为true的值

//2.17 every,筛选数组,参数同forEach。当回调函数所有结果都为true,返回true

//2.18 some,筛选数组,参数同forEach。当回调函数存在结果为true,返回true

//2.19 reduce 迭代器,迭代数组的所有项,并构建一个最终值
    //2.19.1:不省略initial参数,回调函数没有返回值
    var arr = [10,20,30,40,50];
    arr.reduce(function(prev,now,index,self){
        console.log(prev + "--" + now + "--" + index + "--" + (arr == self))
    }, 2019)
    // 打印结果为:
    // 2019--10--0--true
    // undefined--20--1--true
    // undefined--30--2--true
    // undefined--40--3--true
    // undefined--50--4--true
    // 此时回调函数没有return,所以从第二次开始,prev拿到的是undefined

    //2.19.2:省略initial参数,回调函数没有返回值
    var arr = [10,20,30,40,50];
    arr.reduce(function(prev,now,index,self){
        console.log(prev + "--" + now + "--" + index + "--" + (arr == self))
    })
    // 打印结果为:第一次,回调函数的第一个参数是数组的第一项。第二个参数就是数组的第二项
    // 10--20--1--true
    // undefined--30--2--true
    // undefined--40--3--true
    // undefined--50--4--true
    // 此时回调函数没有return,所以从第二次开始,prev拿到的是undefined

    //2.19.3:不省略initial参数,回调函数有返回值
    var arr = [10,20,30,40,50];
    arr.reduce(function(prev,now,index,self){
        console.log(prev + "--" + now + "--" + index + "--" + (arr == self));
        return "hello";
    }, 2019)
    // 打印结果为:
    // 2019--10--0--true
    // hello--20--1--true
    // hello--30--2--true
    // hello--40--3--true
    // hello--50--4--true
    // 此时回调函数有return,所以从第二次开始,prev拿到的是回调函数return的值

    //2.19.4:省略initial参数,回调函数有返回值
    var arr = [10,20,30,40,50];
    arr.reduce(function(prev,now,index,self){
        console.log(prev + "--" + now + "--" + index + "--" + (arr == self));
        return "hello";
    })
    // 打印结果为:第一次,回调函数的第一个参数是数组的第一项。第二个参数就是数组的第二项
    // 10--20--1--true
    // hello--30--2--true
    // hello--40--3--true
    // hello--50--4--true
    // 此时回调函数有return,所以从第二次开始,prev拿到的是回调函数return的值

    //2.19.5:使用reduce计算数组中所有数据的和
    var arr = [10,20,30,40,50];
    var sum = arr.reduce(function(prev,now,index,self){
        return prev + now;
    })
    console.log(sum);      //150
    // 回调函数的最后一次return的结果被返回到reduce方法的身上

    //2.19.6:使用reduce计算数组中所有数据的和
    var arr = [10,20,30,40,50];
    var sum = arr.reduce(function(prev,now,index,self){
        return prev + now;
    }, 8)
    console.log(sum);      //158
    // 回调函数的最后一次return的结果被返回到reduce方法的身上
    // 因为reduce有第二个参数initial,在第一次执行时被计算,所以最终结果被加上8

//2.20 reduceRight 反向迭代器,迭代数组的所有项,并构建一个最终值

3. 扩展方法

//3.1 flat 将嵌套数组转为一维数组
    var arr = [1,[2,3,[4,5,6]]];
    console.log(arr.flat(3)); //[1,2,3,4,5,6] 参数为嵌套数组的层数,可以使用Infinity 为不管多少层,是最深的转换

//3.2 includes 数组和字符串都可以使用,检索是否包含指定子项,返回值为布尔类型
    console.log([1,2,3].includes(1));//true
    console.log("123".includes(1));//true

//3.3 padStart,padEnd字符串方法,在首部或尾部补齐固定位数,例如时间为两位数
    "123".padStart(4,0);//"0123"

//3.4 find找到数组中符合条件的元素,如果有多个符合条件值则返回第一个值

tip:数组方法代码 参考链接如下:JavaScript数组(Array)方法大全 - 简书 (jianshu.com)

参考链接苏恩博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值