数组相关方法
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中数组和字符串一些方法的简单总结啦,可能会有些遗漏和不足,以后会慢慢完善和纠正~~~