1.join()
//不改变原数组,返回字符串,括号不填的话,默认插入逗号","
var arr=[1,2,3,4,5,6,7,8,9,10]; //join(空字符串)返回12345678910
var arr1=arr.join("") //join()效果和.toString()相同
if(arr.join()==arr.toString()){ console.log(true) }2.reverse()
//颠倒排序,返回逆序数组,同时会颠倒原数组的排序
var arr=[1,2,3,4,5,6,7,8,9,10];
var arr1=arr.reverse()//返回 10,9,8,7,6,5,4,3,2,1 //arr1和arr还是同一个数组,reverse不通过重新排列的元素创建新数组,而是在原先的数组中重新排列它们。
3.sort()
var arr=[1,2,3,4,5,6,7,8,,9,10]; //sort()排序,返回排序后的数组,
//sort有两种使用方法,
//方法一:arr.sort()不加函数条件直接使用,数组按ASCII码表比大小。
//如果有undefined的元素时,排到尾部。
arr.sort()console.log(arr)//返回[1,10,2,3,4,5,6,7,8,9,empty] //使用这种方法时,如果有元素大于10的话就没办法排序了。
//方法二:当使用函数条件时sort(function(a,b){return a-b || b-a})
//a是后一项,b是前一项,当return a-b时,返回正向排序,当return b-a时返回反方向排序。
var arr1=[1,2,3,4,5,6,7,8,,9,10];
arr1.sort(function(a,b){ return a-b; })
console.log(arr1) //返回[1,2,3,4,5,6,7,8,,9,10,empty]
arr1.sort(function(a,b){
return b-a;
})console.log(arr1) //返回[10,9,8,7,6,5,4,3,2,1,empty]
4.concat()
//concat()合并,合并后返回新数组,被合并的数组不会发生变化,空元素也被复制。
var arr=[1,2,3,4,5,6,7,8,,9,10];
var arr1=[11,12,13] //方法一:在括号内添加新数组
var arr2=arr.concat(arr1)//返回[1,2,3,4,5,6,7,8,,9,10,11,12,13]; //方法二;合并元素,将多个元素与原数组和并,返回新数组(与push()相似)
var arr3=arr.concat(11,12,13)//返回[1,2,3,4,5,6,7,8,,9,10,11,12,13]; //方法三:同时合并元素、数组。
var arr4=arr.concat(11,[12,13],arr1)//[1,2,3,4,5,6,7,8,,9,10,11,12,13,11,12,13] //方法四:如果直接使用concat就可以完成数组的复制功能。
var arr5=arr.concat()//返回[1,2,3,4,5,6,7,8,,9,10]5.slice()
//slice()按指定位置截取复制数组的内容,返回包含被截取元素的数组。(slice()不会修改调用的数组)
//slice(0,3)括号内第一个值代表起点,表示从哪里开始,第二个值代表终点,表示截取到那个下标之前。
var arr=[1,2,3,4,5,6,7,8,,9,10];var arr1=arr.slice(0,3)//返回[1,2,3] //当slice()括号内不指定参数或括号内参数为(0)时,会截取整个数组
var arr2=arr.slice()//返回[1,2,3,4,5,6,7,8,,9,10];var arr3=arr.slice(0)//返回[1,2,3,4,5,6,7,8,,9,10]; //当slice()括号内的参数为负数时,它表示相对于数组中最后一个元素位置。
var arr4=arr.slice(-3)//返回[empty,9,10]var arr5=arr.slice(-2,-1)//返回[9],-1是数组最后一个元素。6.splice()
//splice()在数组中插入或删除元素的通方法,不同于concat和slice的是splice会修改调用的数组。
//splice()的第一个参数指定了插入或者删除的起点,第2个参数值指定了删除元素的个数,第3个参数指定要插入的元素
var arr=[1,2,3,4,5,6,7,8,,9,10];var arr1=arr.splice(5)//返回[6,7,8,,9,10] 原函数为[1,2,3,4,5]var arr2=arr.splice(2,1)//返回[3],原函数为[1,2,4,5]var arr3=arr.splice(2,0,3)//返回[],原函数为[1,2,3,4,5]var arr4=arr.splice(5,0,6,[7,8])//返回[],原函数为[1,2,3,4,5,6,[7,8]] 7.push() pop()
//push()在尾部添加元素,返回添加元素后数组的长度
//pop()在尾部删除元素,返回被删除的元素
var arr=[1,2,3,4,5,6,7,8,,9,10];var arr1=arr.pop()//返回10,原数组为[1,2,3,4,5,6,7,8,,9]var arr2=arr.push(10)//返回添加元素数后数组的arr.length=11,
原数组值为[1,2,3,4,5,6,7,8,,9,10]arr.push(11,12,[1,2,3])//push可以一次添加多个元素8.unshift() shift()
//shift()和unshift()类似于pop()和push()
//shift()删除数组头部的元素,然后把所有元素下移一个位置来填补头部空缺,返回删除元素后数组的长度。
//unshift()在数组的头部添加元素,然后把所有随后的元素移动到更高的索引位来获得足够的空间,返回添加元素的值
var arr=[1,2,3,4,5,6,7,8,,9,10];var arr1=arr.shift()//返回1,原数组为[2,3,4,5,6,7,8,,9,10]var arr2=arr.unshift(1)//返回11,原数组为[1,2,3,4,5,6,7,8,,9,10];9.forEach()
//forEach()从头到尾遍历数组,forEach没有返回值
//forEach(fanction(元素,下标,数组){})
var arr=[1,2,3,4,5,6,7,8,,9,10];arr.forEach(function(a,b,c){
console.log(a,b,c)//forEach遍历会跳过空元素
}) //求数组中所有元素的和
var sum=0;
arr.forEach(function(a,b,c){
sum+=a
})console.log(sum)//5510.map()
//map()从头到尾遍历数组,与forEach的区别是forEach没有返回值而map有返回值。
var arr=[1,2,3,4,5,6,7,8,,9,10]; //用map返回一个与原数组长度相等的新数组,map不会修改原数组。
var arr1=arr.map(function(a){
return a
}) // 筛选数组中大于5的值
var arr2=arr.map(function(a){
if(a>5) return a;
}) // 创建一个新数组,新数组的值是原数组的10倍
var arr3=arr.map(function(a){
return a*10
})11.filter()
//filter()判定函数,调用filter()的方法和map()、forEach()一样,
//不同点是如果返回值是true或能转换为true的值时,那么传递给判定函数的元素就是这个子集的成员。
//它将被添加到一个作为返回值的数组中。
//总而言之就是筛选数组中满足条件的结果。
var arr=[1,2,3,4,5,6,7,8,,9,10]; /// 要求是将数组中大于5的返回到一个新数组
// 首先想到map,但map只能实现原数组和新数组长度相同
var arr1=arr.filter(function(a){
return a>5
}) //根据filter()的特点可以返回没有空原素的数组。
console.log(arr1)//返回[6,7,8,9,10]; //filter也可以去除空元素。
var arr2=arr.filter(function(a){
return true
})
console.log(arr2)//返回[1,2,3,4,5,6,7,8,9,10];12.every() some()
//every()和some()是数组的逻辑判定:它们对数组元素应用指定的函数判断,返回true或false
//some
// 查找数组中是否有满足条件的元素,如果有就返回true,如果没有就返回false
// 遍历数组,如果有一个满足条件的元素,都会直接返回true,不继续向后遍历
var arr=[1,2,3,4,5,6,7,8,,9,10];
var arr1=arr.some(function(a){
return a>5
})
console.log(arr1)//返回true。//every
// 判断数组中是否每一个都满足条件,如果有一个不满足条件,直接跳出
// 所有都满足时返回为ture
var arr2=arr.every(function(a){
return a>=0
})
console.log(arr2)//返回true。13.reduce() redusceRight()
// reduce()和reduceRight()的区别是reduce是从头到尾遍历,而reduceRight是从尾到头
// 从数组的第1位开始遍历,第0位没有遍历,下标从1开始
// 刚开始value是数组的第0项,后面每次value都是undefined
// 如果在函数中使用return 就会将返回值在下次数组的遍历中赋予value
// reduce(function(初始值,元素,下标,数组){})
// reduce返回的是一个值,就是遍历到最后一次return出来的值
var arr=[1,2,3,4,5,6,7,8,,9,10];
var arr1=arr.reduce(function(value,item,index,arr){})
console.log(value);
return value+1
// 循环的次数是数组的个数-1
// value就是上次遍历return的值,第0次遍历时(最开始时是数组的第0项)
//数组累加
// 如果reduce没有设置初始值,累计值是数组的第0位元素,遍历从下标1开始
var arr2=arr.reduce(function(value,item,index,arr){
return value+item
}) // 如果reduce设置了初始值,累积值就是从这个初始值开始,遍历从下标0开始
var arr3=arr.reduce(function(value,item,index,arr){
return value+item
},100)14.indexOf() lastIdexOf()
//数组.indexOf(要查询得元素,从什么位置开始查询) 位置就是下标
//indexOf()和lastIdexOf()搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引。
//如果没找到就返回-1
var arr=[1,2,3,4,5,6,7,8,,9,10];
var arr1=arr.indexOf(6)
console.log(arr1)//返回5var arr=[1,2,3,4,5,6,6,7,8,6,9,6,6,10];
// 从下标7后查找
var arr1=arr.indexOf(6,7)//返回9
var arr2=arr.indexOf(11)//返回-1