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以此类推

 

posted @ 2018-07-23 14:26  HeSh  阅读(191)  评论(0编辑  收藏  举报