join()
拼接函数
string str = Array.join("op") ;所有元素转换为字符串并由op拼接在一起,返回拼接字符串
reverse()
翻转函数(修改原数组,返回逆序的数组)
var a=[1,2,3]
var reverseArr = a.reverse();//a=[3,2,1]
sort()
排序函数
sort():默认按照字母表顺序进行排序
sort(sortfunction(a,b){ return compare(a,b); });
sort((a,b)=>{return compare(a,b)});//lamda表达式
concat()
创建并返回一个数组,不会修改调用的数组
连接的是数组的元素,而非数组本身
eg:
var a=[1,2,3];
a.concat(4,[5,[6,7]]);//返回[1,2,3,4,5,[6,7]]
slice(startindex,endindex)
:返回指定数组的一个片段或者子数组
只有一个参数表示从起始位置到数组结尾
参数为负数表示相对于数组最后一个元素的位置的相对位置
-1:指定最后一个元素
splice(startindex,deleteNumb,insertData)
删除与插入数组的元素
返回删掉的子数组,修改原数组
插入的是数据本身,对于数组不会遍历元素,而是原样插入
a=[1,2,3,4,5,6] a.splice(2,2,[a,b],w)//返回删除的字符串[3,4],a=[1,2,[a,b],w,5,6]
push()/pop():数组尾追加一个或者删除一个元素,修改并替换原始数组
push():返回值为数组的length
pop():返回值为删除数组的元素
unshift()/shift()
:数组头部操作,插入或者删除,整体插入,两个函数的返回值不同
unshift()
:在数组的头部添加一个或者多个元素,并将已存在的元素移动到更高索引的位置来获得足够的空间,最后返回数组的长度
shift()
:删除数组的第一个元素并返回删除的值,然后将数组所有随后的元素下移一个位置填补头部的空缺,length会变化
遍历:
foreach(element,index,a):
不可以break,除非将foreach放在try块中,抛出break异常,可以修改原数组
function foreach(a,f,t){
try{
a.foreach(f,t);
}catch(e){
if(e===foreach.break) return;
else
throw e;
}
}
foreach.break = new Error("stop Iteration");
映射:
map:
将数组的每个元素传递给指定的函数,并返回一个数组,不修改原数组
filter():
数组的子集,参数为逻辑判断函数,逻辑判断函数返回值为true时,就是返回的子集元素,返回的数组总是稠密的
every()/some():
逻辑判断函数,返回值为true/false
- every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。
- some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。
- some一直在找符合条件的值,一旦找到,则不会继续迭代下去。
- every从迭代开始,一旦有一个不符合条件,则不会继续迭代下去。
reduce()/reduceRight():
数组的组合,生成单个值,并返回这个值
两个参数: 第一个:执行化简操作的函数
第二个(可选):传递给第一个参数函数的初始值
var sum = a.reduce(function(x,y){return x+y},0);求和
var product=a.reduce(function(x,y){return x*y},1);求积
var max = a.reduce(function(x,y){return x>y?x:y});最大值
空数组,不带初始值参数调用reduce会导致类型错误异常
对于只有一个元素的数组,如果不带初始值参数调用reduce仅返回第一个元素的值
对于空数组,带参数调用reduce仅返回初始值