注:注意数组和字符串的方法是否改变原数据,以及操作返回值
一、数组
- unshift() /push()
- shift() /pop()
- splice()
- slice()
- concat()
- reverse()
- sort()
- toString()
- join()
- indexOf()
- lastIndexOf()
- forEach()
- map()
- reduce()
- filter()
- find()
- some()
- every()
1、数组的基本方法(增、删、改、排会改变原数组,截、拼、转不影响原数组)
- 增:unshift() /push() 前增/后增一个或多个元素 ,返回数组新长度
- 删:shift() /pop() 前删/后删一个元素,返回删除元素
- 改:splice(index, 删除的长度,item,…,item) 删除/添加元素, 返回截取数组
arr.splice(index, length) // 删除
arr.splice(index, length, item…) // 添加,length为0,代表不删除的添加
let arr = [1,2,3,4,5]
arr.splice(2,3) // 返回[3, 4, 5] ,arr = [1, 2]
let arr2 = [1,2,3,4,5]
arr.splice(1, 0, 11, 22) // 返回 [], arr = [1,11,22,2,3,4,5]
- 截:slice(start, end)
注意:数组和字符串共有这个方法,用法也是一样的;截前(start)不截后(end),返回截取数组
let arr = [1,2,3,4,5,6]
let newArr = arr.slice(2,3) // newArr = [3]
let str = 'abcdefg'
let newStr = str.slice(2,3) // newStr = '3'
- 拼:concat(item, item…) / concat([item, item]) 返回拼接后的数组
- 排:reverse() 反转, 返回反转的数组,改变原数组
sort() 排序,返回排序的数组,改变原数组
其中,sort并不能简单地对数字排序,而是按照字符编码的顺序进行排序
let arr = ['alen', 'zoom', 'klay', 'rose', 'bob']
arr.sort() // ["alen", "bob", "klay", "rose", "zoom"] // 符合预期
let arr = [1,50,100,2000]
arr.sort() // [1, 100, 2000, 50] 不符合预期的排序
// 对数字进行升序 return a - b,降序 return b - a
let arr = [3,200,60,10000,7]
arr.sort((a, b) => {return a - b}) // [3, 7, 60, 200, 10000]
- 转:toString() 转为以逗号分隔的字符串 / 转换进制, 返回字符串,不改变原数组
join() arr.toSting() 结果等于arr.join(’,’)
2、数组的拓展方法
- indexOf(查找的元素,开始查找的下标):从某个下标开始查找这个元素第一次出现的位置。 查不到返回-1。与字符串的indexOf用法一致
- lastIndexOf(查找的元素,开始查找的下标): 返回的是,查找元素最后一次在数组(字符串)出现的位置。返回结果与indexOf一致,只不过这是从后往前查询,特殊业务下缩短查询时间。
- forEach() 遍历数组 (无返回值)
array.forEach(function (value,index,arr) {
// value: 当前元素,index:当前元素的索引值,arr:当前元素所属的数组对象
})
- map() 返回新数组,不改变原数组
array.map(function (value,index,arr) {
// value: 当前元素,index:当前元素的索引值,arr:当前元素所属的数组对象
})
- reduce() 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
arr.reduce(callback,[initialValue])
callback (执行数组中每个值的函数,包含四个参数)
1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
2、currentValue (数组中当前被处理的元素)
3、index (当前元素在数组中的索引)
4、array (调用 reduce 的数组)
initialValue (作为第一次调用 callback 的第一个参数。)
具体用法参考:JS数组reduce()方法详解及高级技巧
- filter() 过滤符合条件的元素,返回新数组,不改变原数组
filter(function(value,index,arr{return ...})
let arr = [1,6,4,4,8,9,33];
let list =arr.filter(function(value){
return value >6
})
console.log(list) // 8,9,13
- find() 返回符合条件的第一个元素
- some() 检测数组中的元素是否满足指定条件,返回Boolean值。如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测;否则返回false
- every 检测数组所有元素是否都符合指定条件,返回Boolean值。如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测;如果所有元素都满足条件,则返回 true
二、字符串
-
查:
charAt(index): 根据下标查找指定的字符下表找不到时,输出空。
charCodeAt(index): 根据下标查找指定的字符的编码值 。标超出范围时,输出NAN -
替: replace(旧串,新串) 替换成新的字符串,一次只能替换一个
-
截:后面的end不截
substring(start,end) 支持参数互换(3,4)(4,3)
substr(start,length)
slice(start,end) 支持负数(从右往左数,-1至-10等等) -
转:
toUpperCase():小写字母转大写字母
toLowerCase():大写字母转小写字母
split(分隔符,截取的长度) : 将字符串转为数组