您的位置:首页 > Web前端 > JavaScript

重温javascript---方法(array)

2016-03-17 12:11 483 查看
前两天去面试,很多都问到了js中处理数组的问题,当时本人脑子一热就是各种循环,额,每次面试官都问我有没有更好的方法,然后,然后就没有然后了。

js中提供的方法其实很多,长时间不用就会被丢到南海晒太阳了,于是自己也快被丢到南海晒太阳去了……

Array

array.concat(item…)

concat方法会产生一个新数组,包含一份array的浅复制(shallow copy)并把一个或多个参数item附加在其后。

var a=[1,2,3];
var b=[4,5,6];
var c= a.concat(b,7,8);
alert(c);//结果为:1,2,3,4,5,6,7,8


array.join(separator)

join方法是把一个array构造成一个字符串。它是用一个separator分隔符将array中的每个元素连接在一起,默认的连接符是”,”。我们也可以使用空字符串作为连接符。

var a=[1,2,3];
var b=[4,5,6];
var c= a.concat(b,7,8);
var d=c.join("");
alert(d);//结果为  12345678


array.pop() 和array.push(item…)

这里牵扯到栈的概念,我们可以把栈比作是一口井,当我们向井里放东西的时候,肯定是从上面运到下面直到堆到井口。当我们从井里取东西的时候,肯定是从井口开始取,直到取到井底。这是一个“先进后出,后进先出”的方式。

array.pop()和array.push(item…)这两个方法就可以使数组像井一样的工作,pop方法已出array中的最后一个元素并且返回该元素。如果array是empty,则返回undefinded。push方法是把一个或者多个参数item附加到一个数组的尾部,和concat不同的是,它会修改array,如果参数是一个数组,它会把这个数组作为单个元素添加到数组中,并且修改这个array的新长度值。

var a=[1,2,3];
var b=[4,5,6];
var c= a.concat(b,7,8);
//pop()方法 和push()方法
var e= c.pop();
alert(e);//结果是 8
var f=['a','b','c'];
var g= f.push(a,b);
alert(f);//结果是a,b,c,1,2,3,4,5,6
alert(g);
//结果 5 在这里注意 push方法返回的是新数组的长度值


array.reverse()

reverse方法反转array里的元素顺序,并且返回array本身。

var a=[1,2,3];
var b=a.reverse();
alert(a);//结果   3,2,1
alert(b);//结果    3,2,1


array.shift()

shift方法移除数组的第一个元素并返回该元素。若这个数组是空的,则返回undefined。

var a=[1,2,3];
var b=a.shift();
alert(a);//结果  2,3
alert(b);//结果  1


array.slice(start,end)

slice方法对array中的一段做浅复制,从array[start]开始,复制到array[end]结束。end参数是可选的,默认是该数组的长度。

如果两个参数中任一个是负数,则数组的长度会和它们相加。如果start大于等于数组的长度,结果会是一个新的空数组。

var a=[1,2,3,4,5];
var b= a.slice(1,3);
var c= a.slice(1);
var d= a.slice(-2,3);
var e= a.slice(6,9);
alert(b);//结果  2,3
alert(c);//结果  2,3,4,5
console.log(d);//结果 []
console.log(e);//结果 []


array.sort(comparefn)

sort方法对array中的内容进行排序。不过在给数字排序时需要使用比较函数。比较函数需要接受两个参数,如果这两个参数相等就返回0,如果第一个参数应该排列在前面则返回一个负值,相反,如果第二个参数应该排列在前面则返回一个正数。

var a=[20,35,21,5,15,39,90,0];
var b=a.sort();
alert(a);//结果  0,15,20,21,35,39,5,90
alert(b);//结果  0,15,20,21,35,39,5,90


上面的数字排序并没有完全正确,试试下面的方法

var a=[20,35,21,5,15,39,90,0];
var b=a.sort(function(n,s){
return n-s;
})
alert(b);//结果  0,5,15,20,21,35,39,90


上面的这个函数可以使数字正确排序了。更多的函数排序方法以后再说。

array.splice(start,deleteCount,item…)

splice方法从数组中移除一个或者多个元素,并用新的item代替它们。第一个参数start是从数组要移除的元素的起始位置,第二个参数就是要移除元素的个数,剩下如果还有的参数就是替换的元素。它返回一个包括被移除的元素的数组。

var a=[0,1,2,3,4,5,6];
var b=a.splice(2,2,3,4,5);//a是 0,1,3,4,5,4,5,6
var c=a.splice(2,2);
alert(b);//结果  2,3
alert(c);//结果  3,4
alert(a);//结果  0,1,5,4,5,6


不要将splice方法和slice方法弄混,slice方法是获取数组的指定位置的值,而splice方法是移除指定位置的值并且返回的是移除的数值。

array.unshift(item….)

unshift方法像push方法用来把元素添加到数组中,但是它将item的元素插入到数组的头部而不是尾部,它的返回值是数组的新长度。

var a=[1,2,3,4];
var b=a.unshift(5,6,7);
alert(a);//结果  5,6,7,1,2,3,4
alert(b);//结果   7


上面的方法就是array常用的方法,其他的一些方法会很快总结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: