字符串方法 数组方法
字符串及字符串方法
length 返回字符个数 下标 取值
字符串 length 不可修改字符串.字符串基本只读,不可修改
es5字符串方法
charAt
获取字符串项 (参数 : 索引)
let str = "hello"
console.log(str.charAt(str.length-1)) // o
charCodeAt
返回指定位置字符串项的unicode编码 (参数 索引)
console.log(str.charCodeAt(str.length-1)) // 111
String.fromCharCode
( 参数 unicode编码 ) 通过编码返回对应字符
console.log(String.fromCharCode(111))// o字母
indexOf
( 参数 字符串内容 ) 通过字符串项 返回当前找到的第一个的 索引
如果有两个参数 第一个参数是检索的字符串项,第二个参数是从哪个位置开始检索的索引值 (找不到就返回-1)
console.log(str.indexOf("l")) // 2
console.log(str.indexOf("l",1)) // 从下标1开始检索
lastIndexOf
通过字符串项 返回当前找到的最后一个的 索引
如果有两个参数 第一个参数是检索的字符串项,第二个参数时从哪个位置结束检索的索引值 (找不到就返回-1)
console.log(str.lastIndexOf("l")) // 3
console.log(str.lastIndexOf("l", 4)) // 在下标4之前检索
//检索多字符
console.log(str.lastIndexOf("ll")) // 2 返回第一个的索引 找不到则返回 -1
substring
截取字符串 接收两个参数 1:起始位置 2:结束位置 左闭右开 返回新字符串
参数互换位置没有关系,反正也会自动识别大小
let str = "hello world"
let str1 = str.substring(6,str.length)
console.log(str1) //world
slice
截取字符串 和substring一样 只不过不允许参数互换位置
let str = "hello world"
let str1 = str.slice(6,str.length)
console.log(str1) //world
toLowerCase
小写转大写 不接参数 干就完了
let str = "Hello"
console.log(str.toLowerCase()) // hello
toUpperCase
大写转小写 不接参数
let str = "Hello"
console.log(str.toUpperCase()) // HELLO
split
字符串变数组 按照一定方式切割 重要
let str = "1 3 1 4"
//let arr = str.split() //不切啥 ["1 3 1 4"] 一条数据
//let arr = str.split("") //按空切 ["1", " ", "3", " ", "1", " ", "4"] 包含空格
let arr = str.split(" ") //按空格切 [1, 2, 3, 4]
let arr = str.split("3") //按3切 ["1 ", " 1 4"]
trim()
方法用于去除字符串两端的空格,返回一个新字符串,不改变原字符串。
let str = " zhuque "
let str1 = str.trim()
console.log(str1)
match()
方法用于确定原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null
。
// 一般配合正则使用 后面还会提到
let str = " zhuque112233 "
let arr = str.match("112233")
console.log(arr)
search()
方法的用法等同于match
,但是返回值为匹配的第一个位置。如果没有找到匹配,则返回-1
。
replace()
替换字符串 返回新字符串 多用于正则
let str = " zhuque112233 "
let str1 = str.replace("112233", "很美丽")
console.log(str1) //朱雀很美丽
数组及数组 API
es5 数组方法
length 属性
显示数组的数据个数 可使用于遍历数组数据时
let arr = ["我", "520","you"]
console.log(arr.length)//3
可以通过改变length 而改变里面的数据
arr.length = 5;
console.log(arr) // 后面新增两条undefined数据
push 往数组最后添加数组项( 数据 )
改变原数组
return返回添加后的数据个数length
需要传参 ( 不传则认为是空 数组不添加) 可以传参多个
let arr = [1,2,3,4,5,6,7]
arr.push(8) //return 8
console.log(arr) // [1,2,3,4,5,6,7,8]
console.log(arr.push(8)) // 9 这里是添加了两次8 末尾两个8
console.log(arr) // [1,2,3,4,5,6,7,8,8]
arr.push("我","爱","你") //[1,2,3,4,5,6,7,8,8,"我","爱","你"]
pop 删除数组最后一项 ( 数据 )
改变原数组
return返回 移除的这条 数据 ( 如果我们又要修改数组 又需要取到数组最后一项 可以使用这个操作 )
不需要传参 ( 反正只删最后一条 不管你是谁 ) 一次删一个
let arr = [1,2,3,4,5,6,7]
console.log( arr.pop() ) // 7 返回移除的数据 7
console.log(arr) // [1, 2, 3, 4, 5, 6] 7被抛出去了
unshift 往数组最前添加数组项 ( 数据 )
改变原数组
return 返回添加后的数据个数length
需要传参 可以传参多个
let arr = [1,2,3,4,5,6,7]
arr.unshift("我","爱","你") //return 10
console.log(arr) // ["我", "爱", "你", 1, 2, 3, 4, 5, 6, 7]
shift 删除数组最前一项 (数据)
改变原数组
return返回 移除的这条 数据
不需要传参 ( 反正只删最前面一条 不管你是谁 ) 一次删一个
let arr = [1,2,3,4,5,6,7]
arr.shift() //return 1
console.lig(arr) // [2,3,4,5,6,7]
slice 切割数组 通过下标截取数组
返回切割的新数组 ( 变量接收下 )不改变原数组
参数 (下标/索引值 )左闭右开 左边能取到 右边取不到
只有一个参数默认这个下标开始一直到结束
let arr = [1,2,3,4,5,6,7]
let arr1 = arr.slice(4,6) //4 5 6 右开所以6取不到
console.log(arr1) // [5,6] 对应下标 4 5
splice( index ,num ,new...) 替换
第一个参数 index => 开始替换的下标 必选
第二个参数 num => 从左至右 替换的个数 必选
后面的参数 new =>替代的新的数据 可选
返回被替换下来的数据组成的新数组 (变量接收下)
改变原数组 =>将替换上去的新内容放进去
let arr = [1,2,3,4,5,6,7]
let arr1 = arr.splice(2,3,"我","爱","你" )
console.log(arr1) // [3,4,5,] 返回的被剪下来的数组
console.log(arr)// [1, 2, "我", "爱", "你", 6, 7] //用胶带粘上新东西的旧数组
可替代以上5种方法 一个顶 5
//push 后增
arr.splice(arr.length,0,"我")//从最后一个开始删 删0个 后面不拼接上去 数值只要大于等于arr.length-1就行 哪里剪断 哪里拼接
//pop 后减
arr.splice(arr.length-1,1) //从第一个开始删 删一个 后面不拼接上去
//unshift 前增
arr.splice(0,0,"我") //从第一个开始删 删0个
//shift 前减
arr.splice(0,1)
//slice 切割 比如slice(3,5) 左闭右开 实际切3 4
arr.splice(3,2)
concat 数组拼接 返回拼接后的数组
let arr = ["我"]
let arr1 = ["爱"]
let arr2 = ["你"]
let arr3 = arr.concat(arr1, arr2);
// arr3 = arr.concat(["爱"], ["你"]) 一样窝
console.log(arr3)
//要拼接的主体放前面 , 拼接的数组 放到方法里面
//可拼接多个数组 返回新的数组,需要变量接收
join 数组变字符串 必备
根据参数规则,返回新的字符串,不改变原数组
参数: 用什么拼接 不写,不需要拼接的,返回"1,2,3,4,5,我"
"" 空代替 ,
"+" 加代替 ,
" " 空格代替 ,
let arr = [1,2,3,4,5,"我"]
let str = arr.join() //"1,2,3,4,5,我"
let str1 = arr.join("") // "12345我"
let str2 = arr.join("+") // "1+2+3+4+5+我"
let str3 = arr.join(" ") // "1 2 3 4 5 我"
sort 排序
修改原数组内数据排序
此方法为底层已经定义好的,多种编程里面唯一一个底层定义好的排序方法
// 以首字符编码顺序排序
let arr = [9,5,3,1,7,8,4]
arr.sort()
console.log(arr) //[1, 3, 4, 5, 7, 8, 9]
-
value <= 0 首尾一一对应 对换顺序
let arr = [9,5,3,1,7,8,4] arr.sort(function(a,b){ return 2 }) console.log(arr) // 首尾一一对应对换顺序
-
value > 0 不换顺序
-
正序 ( 冒泡排序 )
||||| a - b 由小及大 升序
let arr = [9,5,3,1,7,8,4]
arr.sort(function(a, b){
return a - b;
})
console.log(arr) // [1, 3, 4, 5, 7, 8, 9]
- 倒序 ( 冒泡排序 )
||||| b - a 由大及小 降序
let arr = [9,5,3,1,7,8,4]
arr.sort(function(a, b){
return b - a;
})
console.log(arr) // [9, 8, 7, 5, 4, 3, 1]
- 特殊情况 字符串等
let arr = ['c','b','a'];
arr.sort(function(a,b){
return b-a;
});
console.log( arr ); //不会进行排序!字符串方面的排列,很是奇怪!
-
reverse 倒序 (改变原数组)
let arr = ["我","爱","你"] arr.reverse() console.log(arr)//["你","爱"."我"]
es6数组方法
forEach() 遍历数组
必须接收一个回调函数参数
let arr = [9,5,3,1,7,8,4,0]
arr.forEach((a,b,c) =>{console.log(a,b,c)});
//输出 参数 第一个 数组项 第二个 序号 第三个 原数组
// 修改回调函数this指向参数
let data = {
user: ["乌拉","心艾"],
fn: function (user){
user === "乌拉"? console.log("美女" + user) : console.log("小可爱" + user)
console.log(this) //修改回调函数this指向 ,默认指向window 现在指向 data对象
}
}
data.user.forEach(data.fn, data);
map
映射 和forEach类似 , 会遍历数组项 并映射返回一个新的数组
let arr = [1,2,3]
let arr1 = arr.map(val => value + 1)
console.log(arr1)//[2,3,4] //返回一个新数组
forEach替代写法
let arr = [1,2,3]
let arr1 = []
arr.forEach((value, index) =>{
value ++
arr1[index] = value
})
console.log(arr1) //[2,3,4]