js数组与字符串处理 slice、splice、substring、substr、push、pop、shift、reverse、sort、join、split
数组
方法
1.在数组末尾添加、删除元素
push()方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度。改变原数组
pop()方法则从数组末尾移除最后一个元素,减少数组的 length 值,然后返回移除的元素。改变原数组
2.在数组前端添加、删除元素
unshift() 方法从数组前端添加一个或多个元素,返回数组的长度。改变原数组
shift() 方法从数组前端移除一个元素,返回删除元素。改变原数组
3. 重排序方法
reverse() // 返回一个逆向排序的新数组, 改变原数组
sort() //返回一个从小到大排序的新数组 , 改变原数组
注意:sort排序默认是按照数组元素的ASCII码的大小排序,如果想用sort完成元素数值大小的排序需要调用函数
//数组升序排列 function compare(m, n) { return m– n; //想要降序排列此处换为 n – m; } arr.sort(compare);
1.基于当前数组元素/数组,连接新的元素/数组,形成一个新的数组
concat() 方法返回新数组,不改变原数组
2.获取、截取、插入、替换元素
slice 基于当前数组获取指定区域元素,并返回一个新数组,不改变原数组
//slice(a,b) 获取范围是[a b) var arr = Array(2,5,8,10,3,28); var a = arr.slice(1,2); //从下标1开始获取,到下标2结束,不包括下标2 [1 2). document.writeln(arr); //元素不变 document.writeln(a); //5
splice 数组值的截取、插入、替换、删除,会改变原数组
数组值的截取会改变原数组,返回截取元素的数组
//splice(a,b) 截取范围是从a按开始,截取长度为b var arr = Array(2,5,8,10,3,28); var a = arr.splice(2,3); //从下标2开始,截取3个元素 document.writeln(arr); //2,5,28 document.writeln(a); //8,10,3
插入元素,无返回值,改变原数组
//splice 插入 var arr = Array(2,5,8,10,3,28); var a = arr.splice(2,0,"a","b"); //从下标2开始,截取0个元素,并插入新元素 document.writeln(arr); //2,5,a,b,8,10,3,28 document.writeln(a); //无返回值
替换元素,返回被替换元素,改变原数组
//splice 替换 var arr = Array(2,5,8,10,3,28); var a = arr.splice(2,1,"a"); //从下标2开始,截取1个元素,并插入一个新元素(数组元素替换) document.writeln(arr); //2,5,a,10,3,28 document.writeln(a); //8
删除元素
//splice 删除 var arr = Array(2,5,8,10,3,28); var a = arr.splice(2,1); //从下标2开始,截取1个元素,并插入一个新元素(数组元素替换) document.writeln(arr); //2,5,10,3,28 document.writeln(a); //8
3.定义数组元素间的分隔符
join 使用指定的分隔符把数组中的数据连接成字符串,返回新字符串,不改变原数组元素
Join() var arr = Array(2,5,8,10,3,28); var w = arr.join("、"); document.writeln(w); //2、5、8、10、3、28 document.writeln(arr); //2,5,8,10,3,28
字符串string
- 字符的获取方法
str.charAt str.charCodeAt String.fromCharCode
str.charAt str.charCodeAt String.fromCharCode var str = "0123456"; console.log(str.charAt(3)) ; //获取下标为3的字符 3 console.log(str[3]) ; //获取下标为3的字符 3 console.log(str.charCodeAt(3)) ; //获取下标为3的字符的编码(ASCII码)51 console.log(String.fromCharCode(97)) ; //ASCII编码转换成字符 a var str = String.fromCharCode(98,99); console.log(str); //bc
该方法是 String 的静态方法,所以用String调用, 如:var str = String.fromCharCode(98,99); 可传入多个参数
2.连接字符串 str.concat()
str.concat() 也可以用+连接 var str1 = "hello"; var str2 = str1.concat(" world"); console.log(str1); //hello console.log(str2); //hello word
3.字符串的查找方法
str.indexOf( ) 查找字符串第一次出现的位置,如果没找到则返回-1
str.indexOf( ) var str = "abcdabcd"; var subStr = "bcd"; var index = str.indexOf(subStr); console.log(index); // 1
str.lastIndexOf( ) 查找字符串最后一次出现的位置, 如果没找到则返回-1
str.lastindexOf( ) var str = "abcdabcd"; var index = str.lastIndexOf(“abc”); // 4
4.正则匹配
str.search() 正则匹配 (返回第一次出现的位置)
str.search() var str = "Abcdabcd"; var index = str.search(/abc/gi); //index = 4
注: g表示进行全局匹配,i表示匹配的时候忽略大小写
5.str.replace() 替换字符串
str.replace() var str = "how are you!"; var newStr = str.replace("are", "old are"); console.log(str); //how are you! console.log(newStr); //how old are you!
这里的替换只能执行一次,不能够进行全局匹配,如果需要全局匹配,则应使用正则表达式: str.replace(/are/gi, "old are")
字符串的常用函数(重要)
substring(start,end); //截取字符串 范围是[start, end)
substr(a,b) 截取字符串,范围是从下表为a的字符开始,截取长度为b
substr() var str = 'Hello world!'; console.log(str.substring(2,5)); //llo console.log(str); //Hello world! console.log(str.substr(2,5)); //llo w
注: 如果只有一个参数, 则表示到字符串最后
split(separator, howmany)—根据分隔符、拆分成数组
separator(字符串或正则表达式)
howmany(可以指定返回的数组的最大长度, 可以省略)
split() 根据分隔符、拆分成数组 var str = 'Hello*world*!'; var str1 = str.split(/\*/); console.log(str); //Hello*world*! console.log(str1); //["Hello", "world", "!"] var str = 'Hello*world*!'; var str1 = str.split(''); console.log(str1); //["H", "e", "l", "l", "o", "*", "w", "o", "r", "l", "d", "*", "!"]
【注】如果空字符串(“”)用作separator,那么stringObject中的每个字符之间都会被分割。
toLowerCase() 方法用于把字符串转换成小写
toUpperCase() 方法用于把字符串转换成大写