关于字符串和数组的一些操作

字符串和数组是两个很常用的数据类型了,也有很多操作方法,但是一不小心总会将这两种操作方法弄混/手动捂脸

最近看了下 ES6,里面有一些很好用的方法,在这里也一并总结一下。

新建

var arr=[];
//或者
var arr= new Array()
var a="新闻";

赋值:

var arr= new Array();//可以直接用数字约定数组长度,var arr= new Array(2);表示只有两个元素
arr[0]="新闻";
arr[1]="直播";
//或者
var arr=new Array("新闻","直播");

访问

console.log(arr[1]);//索引从0开始

修改

arr[1]="微博";//直接赋值即可覆盖
var a="新闻"; var a="微博"; //直接赋值新的会代替旧的值

数组方法

方法 说明
concat() 连接两个或多个数组,返回新数组
join() 通过字符连接数组元素组成字符串,默认用逗号连接
pop() 删除并返回数组最后一个元素
push() 向数组末尾添加一个或多个元素,改变原数组返回新的长度
shift() 删除并返回数组的第一个元素
unshift() 向数组开头添加一个或多个元素,改变原数组返回新的长度
reverse() 颠倒数组顺序
sort() 对数组进行排序
toString() 将数组转换为字符串

特殊记忆:

slice(start,end): 剪切,返回被剪切的元素

start 为-1表示最后一个元素,end 可以没有表示到末尾

splice(index,number,item): 剪切或者添加,原数组被改变,返回被删除的元素。

index 和 number 必需,index 为负表示从末尾开始,number 为 0 表示不删除。item 表示新添加的元素,可选。

拓展方法

…()

[…[1,2], …[3,4], …[5,6]]; //[1,2,3,4,5,6]
[…’hello’]; //[“h”,”e”,”l”,”l”,”o”]

forEach 遍历,调用数组的每个元素,并传递给回调函数

array.forEach(function(currentValue, index, arr), thisValue)

arr.forEach(function(x,index){
console.log(x,index)
})

map 映射加转换,不改变原数组

array.map(callback,[ thisObject]);

arr.map(function(x){
return x+10;//每个元素+10
})

filter 过滤,不改变原数组

array.filter(callback,[ thisObject]);

arr.filter(function(x,index){
return index%3||x>=8
})

every 对数组每个元素进行判断,必须所有都符合才返回true
some 部分符合即返回true

arr.every(function(x){
return x>10;//返回true或者false
})

reduce 让数组中的前一项和后一项做某种计算并累计最终值,不改原数组

arr.reduce(function(x,y){
return x+y//计算连加
})

字符串方法

方法 说明
charAt(n) 返回指定位置的字符串
concat() 连接两个或多个字符串,并返回新的字符串
indexOf() 返回指定字符第一个出现的索引位置,没有则返回-1
str.link(url) 将字符串显示为链接
substring( start,[end]) 截取字符串

特殊记忆:

concat(): 和数组方法类似
slice(start,[end]): 剪切字符串,返回被剪切的字符串
split(separator,number): 分割字符串为数组

从 separator 处分割,取 number 个

ES6新增方法:

  • includes()判断字符串(数组)是否含有某一字符串(值),返回true或者false;
  • startsWith()判断是否以某一字符串开头
  • endsWith()判断是否以某一字符串结尾
  • repeat(n)将字符串重复n次

常用

字符串模板:一般用于表示多行字符串,使用两个``符号表示,如果包含变量,则将变量写在${}