JavaScript数组与字符串相关方法总结

数组相关方法

push(newEle1,newEle2,…)

  • 向数组末尾添加一个或多个元素
  • 返回新的数组的长度
  • 原数组发生变化

pop()

  • 删除数组的最后一个元素,数组长度减1
  • 返回数组最后一个被删除的元素,数组为空时不进行任何操作,返回undefined
  • 原数组发生变化

unshift(newEle1,newEle2,…)

  • 向数组开头添加一个或多个元素
  • 返回新的数组长度
  • 原数组发生变化

shift()

  • 删除数组的第一个元素
  • 返回数组的第一个元素,数组为空时不进行任何操作,返回undefined
  • 原数组发生变化
    注:push和pop方法结合使用,符合“后进先出”的栈结构;push和shift方法结合使用,符合“先进先出”的队列结构

slice(start,end)

  • 从数组中返回指定的元素
  • 返回一个新数组,包含[start,end)之间的元素
  • 原数组不变
  • start为必需值,若为负数,则规定从数组尾部开始算起,若省略第二个参数,默认返回到原数组的最后一个成员

splice(index,howmany,item1,item2,…)

  • 从数组中删除并添加元素
  • 返回一个新数组,包含原数组中被删除的元素
  • 原数组发生变化
  • index为必需值,规定开始添加/删除元素的下标,若为负数,则从数组尾部开始算起;howmany为必需值,规定要删除的元素数量;item为可选值,表示向数组中添加的新元素
  • 若只有index值,则等同于将原数组在指定位置拆分为两个数组

reverse()

  • 颠倒数组中元素的顺序
  • 原数组发生改变

sort()

  • 对数组中的元素进行排序
  • 无参数时,将按照字符编码的顺序进行排序
  • 如果想要按照其他标准排序,则需要提供比较函数,例如:
arr.sort(function(a,b){
	return a-b;	//升序
	return b-a; //降序
})

join(separator)

  • 以指定参数作为分隔符将所有数组元素连接为一个字符串返回
  • 如果不提供参数,默认用逗号分隔
  • 如果数组袁术是undefined/null,则会被转成空字符串

----------以下为ES5新增数组方法----------

indexOf(searchEle,startIndex)/lastIndexOf(searchEle,startIndex)

  • 两个方法都返回指定元素在数组中的位置,如果没有找到则返回-1。二者区别只在于一个是从前往后找,一个是从后往前找,在进行比较时,使用===操作符

every()

  • 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true

some()

  • 对数组中的每一项运行给定函数,如果该函数对任何一项返回true,则返回true,该方法在任何一项返回true之后就不再进行循环
var arr=[1,2,3,4,5,1];
var a=arr.every(fucntion(item){
	return item>1;
});
var b=arr.some(fucntion(item,index){
	//有一项返回true则结束循环
	console.log(index); //0
	return item<=1;
});
console.log(a,b); //false true

filter()

  • 对数组中的每一项运行给定函数,返回该函数会返回true的元素组成的数组
  • 支持==,不是必须===
var arr=[1,2,3,4,5,1];
var a=arr.filter(function(item){
	return item>"3";
});
var b=arr.filter(fucntion(item){
	return item>3;
});
console.log(a,b); //[4,5] [4,5]

map()

  • 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组,原数组无变化
  • 函数参数:当前成员(item)、当前位置(index)、数组本身
var objArr=[{x:10,y:20},{x:30,y:40},{x:50,y:60},{x:70,y:80}];
var res=objArr.map(fucntion(item){
	return item.x;
});
console.log(res); //[10,30,50,70]

forEach()

  • 与map方法类似,但无返回值
  • 无法中断执行,总是会将所有的成员遍历完

reduce()

  • 依次处理数组中的每个成员,最终累积为一个值
  • 从第一个成员处理到最后一个成员
  • 函数的第一个参数为累积变量,第二个参数为当前变量
var arr=[1,2,3,4,5,1];
var a=arr.reduce(fucntion(a,b){
	console.log(a,b); // 1,2/3,3/6,4/10,5/15,1
	return a+b;
});
console.log(a); //16

注:使用reduce方法可以将二维数组转化为一维数组:

var arr=[[1,2],[3,4],[5,6]];
var res=arr.reduce(fucntion(a,b){
	console.log(a,b); // [1,2],[3,4]/[1,2,3,4],[5,6]
	return a.concat(b);
});
console.log(res); //[1,2,3,4,5,6]

另:isArray()方法被用来判断是否为数组,它可以弥补typeof运算符的不足,typeof运算符只能显示数组的类型为Object,使用方法:value.isArray()

----------以下为ES6新增数组方法----------

Array.from()

  • 将两类对象转换成真正的数组,这两类对象包括类似数组的对象和可遍历的对象
//length属性为必需属性,如果不存在该属性则为[]
var arrayLike={
	0:'a',
	1:'b',
	2:'c',
	length:3
};
var arr=Array.from(arrayLike);
console.log(arr); //["a","b","c"]

字符串相关方法

charAt(index)

  • 返回指定位置的字符(即长度为1的字符串)
  • 如果index不在0与string.length之间,将返回一个空字符串

charCodeAt(index)

  • 返回指定位置的字符的unicode编码
  • 如果index不在0与string.length之间,将返回NaN

fromCharCode(num1,num2,…)

  • 根据unicode编码返回字符串
  • 为String的静态方法,语法为String.fromCharCode()

indexOf(searchString,startIndex)

  • 返回某个指定的字符串值在字符串中首次出现的位置
  • 如果要检索的字符串没有出现,则返回-1

substring(start,end)

  • 提取字符串中结余两个指定下标之间的字符,提取范围为[start,end)
  • 参数非负)如果start值等于end值,则返回一个空字符串,如果start比stop大,那么在提取子串之前会交换这两个参数

slice(start,end)

  • 提取字符串的某个部分,兵役新的字符串形式返回被提取的部分,提取范围为[start,end)
  • 允许参数为负值,不允许start>end

substr(start,length)

  • 在字符串中抽取从start下标开始指定数目的字符
  • ECMAScript没有对该方法进行标准化,因此不建议使用

split(separator,howmany)

  • 把一个字符串分割成字符串数组
  • 在separator出现的地方对字符串进行分割,howmany指定返回的数组最大长度
var str="123_456_789";
console.log(str.split("")); //["1","2","3","_","4","5","6","_","7","8","9"]
console.log(str.split("_")); //["123","456","789"]

replace(regexp,replacement)

  • 在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串,原字符串不受影响
  • 一般只替换第一个匹配的子字符串,除使用带g修饰符(全局匹配)的正则表达式

trim()

  • 去除字符串两端的空格、制表符(\t、\v)、换行符(\n)和回车符(\r)
  • 返回新字符串,原字符串不受影响

toLowerCase()/toUpperCase()

  • 将一个字符串全部转换为小写/大写
  • 返回新字符串,原字符串不受影响
    ----------以下为ES6新增字符串方法

include()

  • 返回boolean值,是否找到了参数字符串

startsWith()

  • 返回boolean值,参数字符串是否在原字符串的头部

endsWith()

  • 返回boolean值,参数字符串是否在原字符串的尾部

repeat(num)

  • 返回新的字符串,表示将原字符串重复n次
var str="Hello World";
console.log(str.include('e')); //true
console.log(str.startsWith('Hello')); //true
console.log(str.endsWith('Hello')); //true
console.log(str.repeat(0)); //""
console.log(str.repeat(2)); //Hello WorldHello World

最后:以上就是关于JS中数组和字符串一些方法的简单总结啦,可能会有些遗漏和不足,以后会慢慢完善和纠正~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值