JS中操作数组的方法

js中操作数组的方法有很多,下面尽量做一个较为全面的总结,希望对大家有帮助。

1、join()

Array.join()方法用于将数组中的元素全部转化为字符串并连接,其返回值为连接后的字符串。可选参数将作为分隔元素的字符串,若不指定参数,将默认用逗号分隔。示例:

var a = [1,2,3,4,5];
a.join("");             //返回"123"
a.join(" ");            //返回"1 2 3"
a.join();               //返回"1,2,3"
var b = new Array(10);  //length为10的空数组
b.join('-');            //返回'---------'  9个连字符组成的字符串

2、reverse()

Array.reverse()方法用于逆序排列数组元素,返回的是逆序的数组(原数组也被替换成逆序的)。

var a = [1,2,3,4,5];
a.reverse();            //返回[5,4,3,2,1]
console.log(a);         //[5,4,3,2,1]

3、sort()

Array.sort()方法用于序列化元素并返回排序后的数组(原数组会被改变)。当不带参数调用该方法时,数组元素以字母表顺序排序。为了按照其他方式排序,需要给sort()方法传递一个比较函数。此函数决定了它的两个参数在排序后的数组中的先后顺序。若返回值小于0,则第一个参数排在前。反之,则第一个参数在后。

var a = ["c","b","a"];
a.sort();               //返回["a","b","c"]
var b = [3,4,1,2,5];
b.sort(functon(a,b){
return a-b;
});                     //返回[1,2,3,4,5]

4、concat()

Array.concat()方法用于“连接”数组,返回一个新数组(原数组并未被修改)。它连接的是数组的元素,而非数组本身。

var a = [1,2,3,4,5];
a.concat(7,8);          //返回[1,2,3,4,5,7,8]
a.concat([7,8]);        //返回[1,2,3,4,5,7,8]
a.concat([7,8],[9,10]); //返回[1,2,3,4,5,7,8,9,10]
a.concat(7,[8[9,10]])   //返回[1,2,3,4,5,7,8,[9,10]]  a仍然是[1,2,3,4,5]

5、slice()

Array.slice()方法用于截取数组,返回一个子数组,但不会修改原数组。它的两个参数指定了子数组的起始和末尾的位置(包含起始位置的元素但不含末尾位置的)。若只有一个参数,则返回从此位置到原数组结尾的所有元素。负参数代表倒数的元素位置,-1代表最后一个元素。

var a = [1,2,3,4,5];
a.slice(2,4);           //返回[3,4]
a.slice(2);             //返回[3,4,5]
a.slice(2,-1);          //返回[3,4]
a.slice(-3);            //返回[3,4,5]

6、splice()

Array.splice()是数组操作中很“全能”的一个方法,既可以插入元素,又可以删除元素。需要注意的是,此方法会修改调用的数组。它的第一个参数指定了操作(插入或删除)的起始位置,第二个参数指定了要删除的元素个数。若省略第二个参数,则从起始点到结尾的所有元素都被删除。splice()返回的是一个由删除元素组成的数组,若没有删除元素就返回一个空数组。

var a = [1,2,3,4,5];
a.splice(2);            //返回[3,4,5];a是[1,2]
a.splice(0,1);          //返回[1];a是[2]
var b = [1,2,3,4,5];
b.splice(2,0,'a','b');  //返回[];b是[1,2,'a','b',3,4,5]
b.splice(2,2,[1,2],3);  //返回['a','b'];b是[1,2,[1,2],3,3,4,5],不同于concat(),splice()插
                        //入了数组本身而非其元素   

7、push()&pop()

push()方法在数组的尾部添加一个或多个元素,并返回数组新的长度。pop()则相反,它删除数组的最后一个元素并返回它删除掉的值。两者都修改并替换原始数组。

var a = [1,2,3,4,5];
a.push(7);              //返回6,a是[1,2,3,4,5,7]
a.pop();                //返回7,a是[1,2,3,4,5]

8、unshift()&shift()

unshift()在数组的头部添加一个或多个元素,并将已存在的元素移动到更高的索引位置来获得足够的空间,最后返回数组新的长度。shift()删除数组的第一个元素并将其返回,然后把所有随后的元素下移一个位置来填补数组头部的空穴。

var a = [1,2,3,4,5];
a.unshift(0);           //返回6,a是[0,1,2,3,4,5]
a.shift();              //返回0,a是[1,2,3,4,5]

9、forEach()

forEach()方法从头到尾遍历数组,为每个元素调用指定的函数,然后给该函数添加三个参数:数组元素、索引、数组本身(后两者是可选的)。

var a = [1,2,3,4,5];
var sum = 0;
a.forEach(function(value){
sum+=value;
});                     //sum = 15

10、map()

map()方法将调用的数组的每个元素传递给指定的函数,并返回一个数组,不修改调用的数组。

var a = [1,2,3,4,5];
a.map(function(x){
return x*x;             //传递给map()的函数必须有返回值
});                     //返回[1,4,9,16,25]

11、filter()

顾名思义,filter用于“筛选”,该方法返回的是原数组的一个子集。传递的函数用来进行布尔判定,若返回true或能转化为true的值,则传递给该函数的元素就是这个子集的成员。

var a = [1,2,3,4,5];
a.filter(function(x){
return x > 3;
});                     //返回[4,5];可以用始终返回true的函数来压缩稀疏数组的空穴

12、every()&some()

every()&some()用于对数组进行布尔判定,传入的函数作为其判定标准。every()即“对于每一个”:当且仅当所有的元素调用判定函数都返回true它才会返回true,some()即“存在”:只要有一个元素调用判定函数返回true就返回true。

var a = [1,2,3,4,5];
a.every(function(x){
return x < 3;
});                     //返回false
a.some(function(x){
return x < 3;
});                     //返回true

13、reduce()&reduceRight()

reduce()的作用是对数组的元素“归一”。它需要两个参数,第一个是执行化简操作的函数,化简函数的任务就是用某种方法把两个值组合或化简为一个值,并返回化简后的值。第二个参数(可选)是一个传递给函数的初始值。
第一次调用函数时,第一个参数是初始值(即第二个参数的值),在接下来的调用中,这个值是上一次化简函数的返回值。若没有设定初始值,则用第一个元素作为其初始值。这样在第一次调用化简函数时就是用了前两个元素作为其第一个和第二个参数的值。
reduceRight()的工作原理和reduce()相同,不同的是它按照索引从高到底的顺序处理数组。

var a = [1,2,3,4,5];
a.reduce(function(x,y){
return x + y;
});                     //返回15,数组求和 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值