数组与字符串方法总结
一直只记得一些基本常用的方法,还是自己总结一下吧,加深印象吧
数组
一、数据操作
1.数组转字符串方法
Arr.toString() ——— [‘a’, ’b’, ’c’].toString =>’a,b,c’.
2.所有数组元素结合为一个字符串
Arr.join() ——— [‘a’, ’b’, ’c’].join() / [‘a’, ’b’, ’c’].join(‘’)=>’a,b,c’ / ‘ab*c’
Join函数的参数代表规定数组元素在字符串中的分隔符,不 传参数默认为逗号分隔
如果参数为 ‘’ 空字符串则会表示’abc’
toString 与 jojn的区别:后者可以决定数组元素在字符串中分隔的方式,前者只能转换成逗号符进行分隔
3.删除数组元素(改变原数组)
1)arr.pop() 删除数组的最后一个元素,并返回被删除的最后一个元素
2)arr.shift() 删除数组的第一个元素,并返回被删除的第一个元素
3)delete arr[需要删除的元素的下标] 被删除的元素会变成undefined , 不建议使用
4.添加数组元素 (改变原数组)
1)arr.push() 在数组结尾处向数组添加一个新的元素,并返回新数组的长度
2)arr.unshift() 在开头向数组添加新元素,并返回最新的数组长度
5.综合方法(包含增加、删除、更改)
arr.splice(index[number,otherItem]) 会修改原数组
1)只传index时 默认为删除操作 返回删除的数据
例如:
let a = [1,2,3];
a.splice(1) —— [2,3] // 表示删除1个元素,默认下标从0开始, 并返回余下的数组元素,原数组变为已经删除的元素
a.splice(0) —— [] //默认表示删除所有数据,返回值是整个数组
2)第二参数表示删除几个元素,第三个参数开始是为需要添加的元素
a.splice(1,1,’1111’) 表示数组a下标为1的元素更改为‘1111’
如果没有第三个参数,则表示删除下标为1开始的一个元素
3)如果需要删除的个数与添加的个数不相同时:
当删除个数大于或者小于添加个数时,会删除所要删除的个数,在删除开始的位置插入添加的元素,并且返回值为删除的元素
例如:let a=[1,2,3,4]; a.splice(0,2, ’添加的数据’) ———>[’添加的数据’,3,4]
let a=[1,2,3,4]; a.splice(0,1, ’add’,‘add2’) ———>[’add’,‘add2’,3,4]
6.合并数组
concat()———arr1.concat(arr2,arr3,……) 返回一个新的合并后的数组; 不会更改原数组
还可以传入数值作为参数———arr1.concat([1,2,3,4])
7.裁剪数组 ———不更改原数组,返回截取的数组
slice(start[end]) ———— start 表示截取数组的起始的下标,end表示截取结束的下标。
不传参数与传入0的情况下表示截取整个数组
只传入start时:
例如 let a = [1,2,3,4,5]; a.slice(1) — 表示从下标开始截取直到最后
传入start与end 时 :
例如 let a = [1,2,3,4,5]; a.slice(1,2) — 表示从下标1开始截取到下标2
二、数组排序
1、reverse() 方法反转数组中的元素
例如:let a = [1,2,3,4].reverse() ——— [4,3,2,1]
let str = [‘111’, ’223’, ’4588’].reverse() ——— [‘4588’, ’223’ , ‘111’]
2.sort()数字排列
例如:let a = [20,90,10,70]
升序:a.sort(function(a, b){return a - b});
降序:a.sort(function(a, b){return b - a});
如果想随机排序则可将return 的代码改为 0.5 - Math.random()
如果想排列数组里的属性值如下例子:
var arr = [
{type:“Volvo”, year:2016},
{type:“Saab”, year:2001},
{type:“BMW”, year:2010}
];
arr.sort(function(a, b){return a.year - b.year});
如果比较字符串如下例子:
arr.sort(function(a, b){
var x = a.type.toLowerCase();
var y = b.type.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;}
return 0;
});
3.数组查找最大最小值 Math.max()/ Math.min()
参数为数组Math.max([1,2,3])
或者是散列的参数Math.max(1,2,3)
三、数组迭代方法
1.arr.forEach((item,index,arr)=>{}) 为每个数组元素调用一次函数(回调函数)
参数为回调函数,
回调函数的三个参数如下:item(数组元素的每一项),index(每个元素的下标),arr(数组本身)
没有返回值
不支持:Internet Explorer 8 及其以下
2.arr.map((item,index,arr)=>{}) 对每个数组元素执行函数来创建新数组,不会对没有值的数组元素执行函数,不会更改原始数组。
返回值为一个新的数组
不支持:Internet Explorer 8 及其以下
3.arr.filter((item,index,arr)=>{return}) 创建一个包含通过测试的数组元素的新数组。
例如:let arr = [1,2,3,4,8]
let a = arr.filter((item,index)=>{return item>2}) ——— [3,4,8]
返回值为一个符合条件的数组
不支持:Internet Explorer 8 及其以下
4.arr.reduce((total, value, index, arr)=>{}) 常用于数组元素求和(从左到右累加)
如下例子:
let arr = [100,200,300]
Let sum = arr.reduce((total, value, index, arr)=>{return total+value })
返回所有数据的和
Reduce拥有两个参数:一个回调函数,一个初始值(非必要)
回调参数中的四个参数:total(若没有初始值则为0)value就是每个元素项 index为每个元素项 arr为数组本身
reduceRight()用法一样,只是从右到左
不支持:Internet Explorer 8 及其以下
5.arr.every((item,index,arr)=>{return})检查所有数组值是否通过条件
let arr = [20,16,15,18,19]
let bol = arr.every((item, index)=>{return item>18})
返回值为boolean值,只要其中一个未通过就为false
其中arr.some() 是其中一个通过就返回true
不支持:Internet Explorer 8 及其以下
6.arr.indexOf(item[start]) 查询数组元素里是否有指定的元素。
未找到则返回-1,反之则返回该指定元素第一次出现的位置(start可选,表示从哪个下标开始搜索)
lastIndexOf()是从尾部开始其余都一样
不支持:Internet Explorer 8 及其以下
7.arr.find((item,index,arr)=>{return})返回通过测试函数的第一个数组元素的值
在return 中写入条件返回第一次查询的数组元素
var arr = [4, 9, 16, 25, 29].find((item,index)=>{return item>9}); 返回16
兼容性不太好
arr.findIndex() 返回第一次查询到的下标
字符串
一、查找字符串中的字符串
1.Str.indexOf(str1,start)
查到了返回第一次查到的 索引,未查到返回-1
2.Str.lastIndexOf(str2,start)
查询成功返回最后一次出现的索引,未查到返回-1
3.str.search(str1)
搜索特定值的字符串,并返回匹配的位置
返回值规则和indexOf一样
与indexOf区别:search不能设置第二参数,但是search可以匹配正则表达式,indexOf则不行
二、提取字符串
slice(start, end)与数组一样 可以接收负值,负值则从最后往前提取
负值位置不适用 Internet Explorer 8 及其更早版本。
substring(start, end)
substring() 类似于 slice()
但是前者不能接受负值,如果省略第二个参数,则该 substring() 将裁剪字符串的剩余部分。
substr()
substr() 类似于 slice()
不同之处在于第二个参数规定被提取部分的长度,省略第二个参数,则该 substr() 将裁剪字符串的剩余部分
charAt(index)返回字符串中指定索引的字符串
charCodeAt(index)返回字符串中指定索引的字符 unicode 编码
三.替换字符串内容
1.Replace() 用另一个值替换在字符串中指定的值
var str = ‘Please sit down’;
var n = str.replace(“sit”, “go”);
replace() 方法不会改变调用它的字符串。它返回的是新字符串
默认地,replace() 只替换首个匹配, 对大小写敏感, 可使用正则表达式
其他
1.转化大小写 toUpperCase()/toLowerCase()
2.concat() 结合字符串与数组类似
3.trim() 消除字符串前后空隙
Internet Explorer 8 或更低版本不支持 trim() 方法。
4.字符串转换为数组
split() 将字符串转换为数组,参数为分隔的规则
let txt = “a,b,c,d,e”;txt.split(","); // 用逗号分隔
5.match() 方法根据正则表达式在字符串中搜索匹配项,并将匹配项作为 Array 对象返回。
let text = “The rain in SPAIN stays mainly in the plain”;
text.match(/ain/g) // 返回数组 [ain,ain,ain]
6.includes(str[start])
如果字符串包含指定值,includes() 方法返回 true。数组也适用
7.startsWith(str[start])
如果字符串以指定值开头,则 startsWith() 方法返回 true,否则返回 false
startsWith() 方法区分大小写
endsWith(str[length])如果字符串以指定值结尾,则 endsWith() 方法返回 true,否则返回 false //length 指定搜索长度