javaScript——Array类型
1、检测数组——确定某个对象是不是数组
/** *instanceof操作符 *假定只有一个全局执行环境 */ if(value instanceof Array){ //执行某些操作 }
/** * Array.isArray()方法 *最终确定值是不是数组,不管是哪个全局环境创造的 */ if(Array.isArray(value)){ //执行某些操作 }
2、转换方法
valueOf:返回 Array 对象的原始值。
toString():返回由数组中每个值以逗号分隔的字符串
toLocalString():返回由数组中每个值以逗号分隔的字符串
3、插入与移除方法
push():接收任意数量的参数,逐个添加到数组末尾,并返回修改后的数组
pop() :从数组末尾移除最后一项,返回移除的项
unshift():在数组前端添加任意个项,并返回数组的长度
shift():移除数组的第一项,并返回该项
4、重排序方法
resever():反转数组的顺序
sort():按升序排列数组,即最小的在前面,最大的在后面。sort()方法先调用toString(),然后比较得到的字符串,即使是数字也会被转为字符串比较,所以下面的5会在10的后面
var arr = [0,1,5,10,15]; sort(arr); console.log(arr);//0,1,10,15,5
用函数简单处理后继续比较数字得到想要的结果
var arr = [1,0,5,15,10]; function compare(val1,val2){ //升序排列,即从小到大 return val1 - val2; //降序排列,即从大到小 //return val2 - val1; } arr.sort(compare); console.log(arr);//0,1,5,10,15
5、操作方法
concat():这个方法会先创建一个数组副本,然后把接收到的参数添加到这个副本的末尾,最后返回新构建的数组
slice():基于当前数组的一或多个项创建一个新的数组。slice()接收一或两个参数。
var arr = [1,2,3,4,5]; //slice()只有一个参数时,返回从该参数指定位置开始到当前数组末尾的所有项 slice(1);//2,3,4,5 //slice()有两个参数时,返回第一个参数开始,到第二个参数结束之间的所有项,不包括结束位置的项 slice(1,4);//2,3,4 //slice()参数有负数时,用数组的长度加上该参数来确定当前的位置。如果结束位置小于起始位置,则返回空数组。 slice(-2,-1);//4
splice():主要用途是向数组中插入项,使用的方式有3种
var colors = ['red','green','blue']; //删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数,返回删除的项 splice(0,1);//red console.log(colors);//green,blue //插入:可以向指定位置插入任意数量的项,只需指定3个参数:起始位置、0(要删除的项数)、要插入的项,返回删除的项 splice(1,0,'yellow');//返回空数组 console.log(colors);//green,yellow,blue //替换:可以向指定位置插入人员数量的项,在删除相同数量的项,用法同插入相同,返回删除的项 splice(1,1,'orange');//yellow console.log(colors);//green,orange,blue
6、位置方法
indexOf()、lastIndexOf():都接收2个参数:要查找的项、表示查找的起始位置(可选),返回位置的值,如果没找到,返回-1。要求查找的项必须严格相等(===)
var numbers = [1,2,3,4,5,6]; //indexOf()方法从数组的开头开始查找 console.log(numbers.indexOf(4)); //3 //lastIndexOf()方法从数组的末尾开始查找 console.log(numbers.lastIndexOf(4)); //5
7、迭代方法
5个迭代方法,每个方法都接收2个参数:要在每一项上运行的函数和影响该函数的作用域对象——影响this的值。函数会接收3个参数:数组项的值(item)、该项在数组中的位置(index)、数组本身(array)。
every():对数组的每一项运行给定函数,如果函数的每一项都返回true,则返回true
filter():对数组的每一项运行给定函数,返回改函数会返回true的项组成的数组
forEach():对数组的每一项运行给定函数,无返回值
map():对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组
some():对数组的每一项运行给定函数,如果该函数对任一项返回true,则返回true
var numbers = [1,2,3,4,5,6]; //every() var everyResult = numbers.every(function(item,index,array){ return (item>2); }); console.log(everyResult);//false //filter() var filterResult = numbers.filter(function(item,index,array){ return (item>2); }); console.log(filterResult);//[3,4,5,6] //forEach() numbers.forEach(function(item,index,array){ //执行某些操作 }); //map() var mapResult = numbers.map(function(item,index,array){ return item*2; }); console.log(mapResult);//[2,4,6,8,10,12] //some() var someResult = numbers.some(function(item,index,array){ return (item>2); }); console.log(someResult);//true
8、归并方法
reduce()、reduceRight()
这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。
都接收2个参数:一个在每一项上都调用的函数、作为归并基础的初始值。
函数接收4个参数:前一个值(prev)、当前的值(cur)、项的索引(index)、数组对象(array)。
这个函数返回的任何值都会作为第一个参数传给下一项。即开始迭代发生在第二项上,第一个参数就是第一项(prev),第二个参数就是第二项(cur)
var values = [1,2,3,4] //reduce():数组的开头开始遍历 var sum = values.reduce(function(prev,cur,index,array){ return prev+cur; }); console.log(sum);//10——第一次prev=1,cur=2;第二次prev=3,cur=3以此类推 //reduceRight():数组的末尾开始遍历 var sum = values.reduceRight(function(prev,cur,index,array){ return prev+cur; }); console.log(sum);//10——第一次prev=4,cur=3;第二次prev=7,cur=2以此类推