字符串和数组常用方法整理
字符串方法
- 获取字符串某位字符
[] === charAt
let str = "abcdefg";
console.log(str[0]);//"a"
console.log(str.charAt(1));//"b"
复制代码
- 获取字符串长度
str.length
let str = "abcdefg";
console.log(str.length);//7
console.log(str[str.length-1]);//"g"
复制代码
- 查找某个字符,有则返回第一次匹配到的位置,否则返回-1
indexOf()
let str = "abcdefg";
console.log(str.indexOf("a"));//0
console.log(str.indexOf("z"));//-1
复制代码
- 将字符转换为ascll码值以及将ascll码值转换为字符
charCodeAt()
、String.fromCharCode()
let str = "abcdefg";
console.log(str.charCodeAt(0));//"a" --> 97
console.log(String.fromCharCode(97));//97 --> "a"
复制代码
- 字符串拼接
concat()
let str = "abc";
console.log(str.concat("efg"));//"abcefg"
console.log(str.concat("efg","hijk"));//"abcefghijk"
复制代码
- 字符串切割
slice()
substring()
substr()
let str = "abcdefg";
/*slice*/
console.log(str.slice(1,6));//"bcdef" [1,6)
console.log(str.slice(1)); //"bcdefg" [1,str.length-1]
console.log(str.slice());//"abcdefg" [0,str.length-1]
console.log(str.slice(-2));//"fg"
console.log(str.slice(6, 1));//""
/*
slice只传两个值个值,则表示左闭右开,不包括结束位置的值
传入一个值,则表示,才起始位开始,把字符串切割完
不传值,则切割整个字符串
也可以传入负数,字符串倒数第一位为-1
*/
/*substring*/
console.log(str.substring(1,6));//"bcdef" [1,6)
console.log(str.substring(1)); //"bcdefg" [1,str.length-1]
console.log(str.substring());//"abcdefg" [0,str.length-1]
console.log(str.substring(6,1));//"bcdef" [1,6)
console.log(str.substring(-1));//"abcdefg"
/*
用法和slice基本相同,只不过substring,传入的第一个值比第二个值大
时,默认会进行从小值切到大值的处理
以及传入负数,会切割整个字符串
*/
/*substr(start,length)*/
console.log(str.substr(1,6));//"bcdefg" 6代表切割的length
console.log(str.substr(1)); //"bcdefg" [1,str.length-1]
console.log(str.substr());//"abcdefg" [0,str.length-1]
console.log(str.substr(-1));//"g"
/*
substr 第一个参数表示开始切割的起始位置
第二个参数表示切割的长度
传一个值和不传值的表现和slice相同
也可以传入负值
*/
复制代码
- 字符串转换大小写
toUpperCase()
toLowerCase()
let str1 = "adABDndj";
console.log(str1.toUpperCase());//"ADABDNDJ"
console.log(str1.toLowerCase());//"adabdndj"
复制代码
- 切割字符串返回数组
split()
此方法和数组的arr.join()
对照着讲
注意:字符串的所有方法,都不会改变字符串本身
数组方法
- 数组的取值
数组使用下标取值[idx]
let arr = [1,2,3,4];
console.log(arr[1]);//2
复制代码
- 数组的拼接
arr.concat()
let arr = [1,2,3];
console.log(arr.concat([4,5,6],[7,8,9]));//[1, 2, 3, 4, 5, 6, 7, 8, 9]
复制代码
- 获取数组的长度
arr.length
- 使用
slice
进行数组的切割
用法和字符串相同
let arr = [1,2,3,4,5,6,7,8];
console.log(arr.slice(1,6));//[2, 3, 4, 5, 6] [1,6)
console.log(arr.slice(1)); //[2, 3, 4, 5, 6, 7, 8] [1,arr.length-1]
console.log(arr.slice());//[1, 2, 3, 4, 5, 6, 7, 8] [0,arr.length-1]
console.log(arr.slice(-2));//[7, 8]
console.log(arr.slice(6, 1));//[]
复制代码
indexOf
查找
let arr = [1,2,3,4,5,6,7,8];
console.log(arr.indexOf(8));//7
console.log(arr.indexOf(10));//-1
复制代码
- 往数组里面添加或删除数据
push
往数组末尾添加数据unshift
往数组开头添加数据pop
删除数组末尾的数据shift
删除数组开头第一个数据
let arr = [1,3,4,5];
arr.push("a",6);
console.log(arr);//[1,3,4,5,"a",6];
arr.pop();
console.log(arr);//[1,3,4,5,"a"];
arr.unshift(2);
console.log(arr);//[2,1,3,4,5,"a"];
arr.shift();
console.log(arr);//[1,3,4,5,"a"];
复制代码
arr.splice()
可以实现上述四个方法的所有功能
- 参数1 指定添加或者删除开始的索引
- 参数2 指定删除的length(必须 该值为0,表示不删除任何元素)
- 参数3及之后的参数 表示要添加的数据(可选)
let arr = [1,3,4,5];
arr.splice(0,0,"12");//===arr.unshift("12");
console.log(arr);//["12", 1, 3, 4, 5]
arr.splice(0,1);//=== arr.shift();
console.log(arr);//[1, 3, 4, 5]
arr.splice(arr.length,0,"a");//===arr.push("a");
console.log(arr);//[1, 3, 4, 5, "a"]
arr.splice(arr.length-1,1);//===arr.pop();
console.log(arr);//[1, 3, 4, 5]
复制代码
- 数组的排序(一般用于number类型的数据)
arr.sort()
let arr = [97,3,67,42,100,21];
//升序排序
arr.sort((a,b)=>a-b);
console.log(arr);//[3, 21, 42, 67, 97, 100]
//降序排序
arr.sort((a,b)=>b-a);
console.log(arr);//[100, 97, 67, 42, 21, 3]
复制代码
- 数组拼接成字符串
arr.join()
let arr = [1,23,4,45,5];
let str = arr.join("-");
console.log(str);//"1-23-4-45-5"
//字符串切割成数组
let arr1= str.split("-");//参数表示以什么字符为界限切割字符串
console.log(arr1);//["1", "23", "4", "45", "5"]
复制代码
- 数组反序
arr.reverse()
let arr = [1,3,4,5,6,7];
arr.reverse();
console.log(arr);//[7, 6, 5, 4, 3, 1]
复制代码
注意:数组中和字符串同名的方法,还有外加一个join()
都不改变原数组
转载自:https://juejin.cn/post/6844903752470806536