JavaScript中数组常用方法

时间:2022-12-15 21:27:29

JavaScript中Array()是一个非常常用的类型,array自带了很多方法。下面列举一些常用的方法,还有一些方法不太常用,全面的方法参考md你,点击打开链接

1,数组转字符串的方法 join().

数组转字符串,如果只是单纯的把数组内容串起来,就用arr.join('') ,比如: var  arr = [a,b,c]  ,arr.join(") ; // "abc"  ;想要用字符连接,可以用.join(' -') ,比如,arr.join('-') ;// "a-b-c"

相反,字符串转数组,str.split( ) 方法。括号里可以写字符,也可以不写,比如“abc”.split('') ; //[a,b,c]  ; "a,b,c".split(',') // [a,b,c] ;

2,数组分割方法  concat ,slice ,splice 

   concat 连接两个数组,不改变原数组。传递给concat()方法的可以是数组也可以使单独的项。

比如  var arr1 = var arr1 = ['a' ,'b'];var arr2 = arr1.concat('c' ,['d','e']);

console.log(arr2); // ['a' ,'b','c' ,'d','e'] ;      console.log(arr1);  //['a','b']

 slice()  接受一至两个参数,返回一个新数组,不改变原数组。 第一个参数的默认值是0,第二个参数的默认值是length。函数返回第一个参数和第二个参数之间的项,不包括第二个参数项。由于默认值,如果不提供参数,就相当于复制数组。如果参数为负,则加上数组长度。

   比如:console.log( arr2.slice())  ;   // a,b,c,d,e
console.log(arr2.slice(-2,-1) ) ; //d

splice() 该方法是会影响原数组的。splice()用法很多,可以简单理解为接受三个参数,第一个要删除的起始位置,第二个要删除的项数,第三个可以不是一个,可能是一组,是要添加的项,插入到第一数字项后面。所以根据第二项和第三项传入的值可以对数组产生删除,增加,替换的效果。比如像下面这样,console.log(arr2);                 // a,b,c,d,e
console.log( arr2.splice(0,1) + arr2)  ;   // a + b,c,d,e
console.log(arr2.splice(0,0,'f','g')  + arr2) ; //f,g,b,c,d,e,
console.log(arr2.splice(0,1,'h') + arr2);   //f + h,g,b,cd,e,其中 第一项的默认值是length,第二项默认值也是length,第三项默认值是空。所以如果arr2.splice() ,则不作任何操作。arr2.splice(0) ,全部删除。

3,数组迭代方法。一共有5个,every,some,filter,forEach,map。

    这5个方法,都接受两个参数,第一个是对每一项运行的函数,第二个是作用域,可以省略,默认的作用域就是调用方法的数组本身。而运行的函数接受三个参数,数组的项的值,项的索引,数组对象。这三个参数根据你执行函数的需求写, 一般只需要写第一项。every和some函数返回布尔值,根据字意,数组的每一项都满足条件时,every返回真,数组中有一项满足条件时,every就返回真,filter是过滤函数,返回符合条件的项组成的数组,map的意思是映射,所以在对数组元素进行操作时用map,返回的数组是各项运行过函数的结果数组,forEach没有返回值,对每一项执行传入的函数,相当于for循环。这五个方法,传入的函数都是回调函数,不能用简单的break,return 等跳出函数,所以不要在数组遍历没结束时试图终止函数。

   另外,需要注意的是,回调函数,虽然参数可以任意写,但是实际上传入函数的参数始终是三个,值,索引,数组。自定义函数一般没有问题,如果是js中全局函数,因为接受的参数不是自定义,往往会有意想不到的效果。比如下面这样。

var iter = [1,2,3,4,5];
var mapIter = iter.map(function(item,index,iter){
   return (item *= 2 ) ;
    })
console.log(mapIter);  //[2,4,6,8,10] ;
mapIter = ["1","2","3"].map(parseInt); //[1,NaN,NaN]

第二次结果出现的原因是,parseint接受两个参数,要转换的字符串和转换的进制,当进制为0或不写的时候,浏览器会按自己理解准换。map会对回调函数传入三个参数,parseint把第三个参数忽略,接受项的值和项的索引,所以相当于执行parseint(“1”,0);parseint(“2”,1);parseint(“3”,2).结果自然就是[1,NaN,NaN] ,如果你还会是不明白,请移步mdn  parseInt().

4,push

这个很简单,就是类似入栈。

数组还有几个也经常见到的函数,用的频率没有这几个高,所以不再一一列举。日后用的多了大概还会补充。