花了一天时间整理了es3,es5,es6的相关的api ,主要想增强一下对这些api的细节了解 ,写的不算详细,但是大体也差不多,希望对你也有帮助吧
es3: split(), join(), reverse(), sort(), concat(), shift(), pop(), push(), unshift(),
concat(), search(), replce(), subStr(), subString(), slice(), splice(), match()
1.X.split(n); 把通过n连接的字符串 从每个参数n的地方断开, 参数"" 默认对分割每个字符 返回新的数组 不改变字符串, m
"h!e!le!l!o".split('!') ==> ["h", "e", "le", "l", "o"]; 'a!bc!d!'.split("") ==> ['a', '!', 'b', 'c', '!', 'd', '!']
2. Array.join(n) 把数组以n的的形式连接成字符串 数组成员之间以n连接, n可以是任何符号或者字符(串)
var arr = ["h", "e", "le", "l", "o"]; arr.join('!') ==> h!e!le!l!o;
3. Array.reverse() 把数组的所有成员颠倒过来 返回改变之后的新数组,原数组已改变
[1,2,3,4,5].reverse() ==> [5,4,3,2,1]
4. Array.sort(fn)) 对数组的元素进行排序,参数是一个函数 不填默认是按照字母顺序进行排序,按照数组排序需要一个排序函数; 返回排序之后的新数组,改变原数组
[10,5,40,25,1000,1].sort(function(a,b){return a-b}) 向上排序 ==> [1,5,10,25,40,1000]
5. Array/X.concat(a, b,...)) 拼接字符串或者数组 返回一个新的数据,不修改原来的数组或者字符串
['a', 'b', 'c'].concat(['d'], ['e']) ==> ['a', 'b', 'c', 'd', 'e']
6. Array.pop() 删除数组最后一项成员 原数组改变
7. Array.push(a) 数组的末尾添加一个新成员a 返回当前数组长度 改变原数组
7.Array.shift() 删除数组第一项成员,改变原数组
8.Array.unshift(a) 向数组的的头部添加一个新成员a,返回当前数组的长度,改变原数组
9.X.search(searchvalue) 查找X字符串中参数(正则或者字符串)首次出现的位置 找不到则返回-1 功能类似于indxOf 但是只有一个参数
var str="hello World"; str.search(/World/); ====>6; str.search(/world/); ====>-1; str.search(/world/i); ====>6
10. X.replace(n, m) 替换字符串中的n为m 返回新的字符串 不改变原字符串
var str = 'abcde'; str.replcae('a', 'lan') ==> 'lanbcde'
11. X.substr(n, m) 截取字符串X n位置开始,截取m的长度 返回截取到的字符串 不改变字符串的数据
'abcdde'.substr(1,4) ==> bcdd
12.X.substring(n, m) 截取字符串X 从开始位置n到结束位置m(不包括m)的字符串,不改变原数组
'abcdegft'.substring(1,4) ==> bcd
13. Array/X.slice(start, end), 返回原数组或者字符串从开始位置到结束位置的新数组,不改变原数组
['aa', 'bb', 'vv','e'].slice(1,3) ==> ['bb', 'vv'] 'aabbccdd'.slice(1,3) ==>ab
14. Array.splice(index, len, item1, item2,...) 向数组添加或者删除项目然后返回删除的项目,返回删除的项目['a', 'b']]
['a', 'b', 'c', 'd'].splice(0, 2,'e', 'f') ==> 原数组变成["e", "f", "c", "d"]
15. X.match() 该方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。 该方法类似 indexOf() 和
lastIndexOf(), 但是它返回指定的值,而不是字符串的位置。
var str="1 plus 2 equal 3" str.match(/\d+/g) ==> 1,2,3
es5: filter(), some(), every(),reduce(), map(), lastIndexOf(), find(), findIndex(), forEach(),
1.Arr.filter(function(item, index, arr){}) 根据参数函数return 条件过滤数组 返回符合条件的成员组成的新的数组 不改变原数组
var ages = [32, 33, 16, 40]; ages.filter(item => item > 32) ==> [33,40]
2.Arr.some(function(item, index, arr){}) 根据条件只要数组成员某一项符合 就返回true,不改变原数组
var ages = [32, 33, 16, 40]; ages.filter(item => item > 32) ==> true;
3.Arr.every(function(item, index, arr){}) 根据条件只有数组每一项成员符合 才返回true,不改变原数组
var ages = [32, 33, 16, 40]; ages.filter(item => item > 32) ==> false;
4。Arr.reduce(function(total,currentValue, index,arr){}) 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
var ages = [32, 33, 16, 40]; ages.reduce( (total, cur) => { return total + cur}) ==>32+33+16+40
5. Arr.map((function(currentValue,index,arr)) 返回根据条件对原数组每一项进行操作后组成的新数组
var ages = [32, 33, 16, 40]; ages.map(item => item*2) ==> [64,66,32,80]
6.X/Arr.lastIndexOf(n) 找到字符串X或者数组中最后一次找到的n 位置
var str = 'abcdea'; str.lastIndexOf('a') ==> 5
7. Arr.find(function(item, index,arr){}) 返回符合条件的第一个数组成员
var ages = [15,52,22,19]; ages.find(item => item > 20) ==> 52
8. Arr.findIndex(function(item, index,arr){}) 返回符合条件的第一个数组成员的位置
var ages = [15,52,22,19]; ages.find(item => item > 20) ==> 1
9. forEach(function(item, index, arr){}) 调用数组中的每一项,让外界可操作数组或者操作数组本身
var sum = 0; ages = [15,52,22,19]; ages.forEach(item => {sum +=item; })
es6 padStart(), padEnd(), endWith(), includes(), startWith(), trimStart(), trim(), endTrim(), repeat(), array.flat(), Array.of(项), Array.from(单个字符), Object.keys(), Object.values(), Object.entries()
1. X.padStart(n, m): X字符串向前补齐,n字符串最终长度, m补齐的东西,
var x = 'abc'; x.padStart( 6, 'd') 返回==> dddabc X不变;
2. X.padend(n, m): X字符串向后补齐, n字符串最终长度, m补齐的东西,
var x = 'abc'; x.padStart( 6, 'd') 返回==> abcddd;
3. x.startWith(n, s, e); 检验一个字符串是否是n开头的, s:开始位置,e 结束位置(不包括结束位置),
var x = 'hello world lan' x.startWith('hel', 0, 3) ==>true;
4. x.endtWith(n, s, e); 检验一个字符串是否是n结尾的的, s:开始位置,e 结束位置(不包括结束位置) ,
var x = 'hello world lin' x.endWith('lin') => true;
5. x.includes(n, s, e); 检验一个字符串中是否包含n,不考虑位置, s:开始位置,e 结束位置(不包括结束位置) ,
6. X.trimStart() 删除X字符串中非空字符串前面的空格,返回新的字符串 不改变原字符串
7. X.trim() 删除X字符串中非空字符串前后的空格,返回新的字符串 不改变原字符串
8, X.trimEnd() 删除X字符串中非空字符串后面的空格, 返回新的字符串, 不改变原来的字符串
9. X.repeat(t) X 字符串重复t次 返回新的字符串,不改变原来的字符串
var a = 'abc' a.repeat(3) ==> abcabcabc
10. array.flat(n)) 数组扁平化 把多维数组扁平n层 n = Infinity 无论几维都转换为一维数组 n 不写默认拉平一层
var a = [1,2,[3,4,[5,6,7]],8,9]; a.flat(2) ==> [1,2,3,4,5,6,7,8,9] 兼容性不好 需要高版本的浏览器才能使用
11. Array.of(a,b,c...)) 把不少于2个的参数 变成数组
12. Array.of(1,2,3,4) ==> [1,2,3,4]; Array.of('a', 'b', 'cd') ==> ['a', 'b', 'cd']; Array.of('abcd') ==> ['abcd']
13. Array.from(); 把类数组或者字符串转换成数组
Array.from(new Set([1,2,3,4])) ==> [1,2,3,4], Array.from("hello") ==> ['h', 'e', 'l', 'l', 'e'] ......
14. Objct.keys(obj) 返回对象obj的键名组成的数组; Object.values(obj) 返回对象obj的键值组成的数组,Object.entries(obj) 返回对象obj每一个键名和对应键值组成的数组的数组
var obj = {name:'jhon', age:20, sex: 'female'};
Object.keys(obj) ==> ['name', 'age', 'sex']
Object.values(obj) ==> ['jhon, '20', 'female']
Object.entries(obj) ==> [['name', 'jhon'], ['age', '20'], ['sex', 'female']]