数组与字符串

本文详细总结了数组和字符串的各种操作方法,包括数组的数据操作(如转换、添加、删除、合并、裁剪)、排序、迭代以及字符串的查找、提取和替换等内容。重点讲解了数组的join、splice、sort、forEach、map、filter、reduce等方法以及字符串的indexOf、slice、substring、replace等方法。此外,还介绍了不同方法的使用场景和浏览器兼容性。
摘要由CSDN通过智能技术生成

数组与字符串方法总结

一直只记得一些基本常用的方法,还是自己总结一下吧,加深印象吧

数组

一、数据操作

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 指定搜索长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值