1.array.concat(item……)

返回:一个新数组

该方法产生一个新数组,它包含一份array的浅复制,并把一个或多个参数item附加在其后。如果参数item是一个数组,那么它的每个元素会被分别添加。例如:

 var a = [1,2,3];
document.write(a.concat(4,5));
或者
var b= [4,5];
document.write(a.concat(b));

在连接的时候不会将数组中数据类型变成字符串,也不会改变原数组。例如:

<script type="text/javascript">
var foo=function () {
var a=[1,2,3],b=[4,5];
if(typeof (a.concat(b)[3])==="string"){
alert("string");
}else if(typeof (a.concat(b)[3])==="number"){
alert("number");//number
}else{
alert("other");
}
console.log(a);//[1,2,3]
console.log(b);//[4,5]
}
foo();
</script>

当参数中有一个是空数组时,

var e=[];

var a=[1,2,3];

console.log(a.concat(e));//[1,2,3],不是[1,2,3,""]

console.log(e.concat(a));//[1,2,3]

2.array.join(separator)

返回:一个新字符串

该方法把一个数组构造成一个字符串(把数组所有元素放进一个字符串中),然后元素与元素之间用separator分隔开。

具体来讲,首先先把array中的每一个元素构造成一个字符串,接着用一个separator分隔符把他们连接在一起。默认的separator是逗号','。想做无间隔的连接,可以把separator设为空字符串""。例如:

 var foo=function  () {
var a=[1,2,3],b=[4,5];
var c=a.concat(b).join("");
console.log(typeof c);
}
foo();

如果想要将大量的字符串片段组合到一个字符串,把这些片段放到一个数组中并用join方法连接起来通常比+元素运算符连接起来要快。

在IE6/7中,join方法比+运算符效率快,IE8以后的版本对+运算符进行了特别的优化,性能已经显著高于join方法,建议首选使用+方法。

当数组为空数组时,

var e=[];

console.log(e.join(","));语句没有执行结果

3.array.pop()

返回:被移除的那个元素

移除array中最后一个元素并返回该元素。如果该array是empty,它会返回undefined。数组为空时返回undefined。例如:

 <script type="text/javascript">
var foo=function () {
var a=[1,2,3];
var c=a.pop();
console.log(c);//
console.log(a);//[1,2]
}
foo();
</script>

该方法不能用于null,会报错

 <script type="text/javascript">
var foo=function () {
var a=[1,2,3];
var b=[];
var d=null;
console.log(b.pop());//undefined
console.log(d.pop());//报错
}
foo();
</script>

pop可以这样实现:

Array.method("pop",function(){
return this.splice(this.length-1,1)[0];
});

4.array.push(item……)

返回:原数组的新长度

push方法把一个或多个参数item附加到一个数组的尾部。和concat方法不同的是,这个方法会改变元素组,也就是说将item加入原数组中。

 <script type="text/javascript">
var foo=function () {
var a=[1,2,3];
var b=["x","y","z"];
var c=a.push(b,true);
console.log(a);//[1,2,3,Array(3),true],这里a的长度为5
console.log(c);//
}
foo();
</script>

push可以这样实现:

 Array.method("push",function(){
this.splice.apply(this,[this.length,0].
concat(Array.prototype.slice.apply(ayguments))
);
return this.length;
)};

5.array.reverse()

返回:array本身反转之后

将array里的元素的顺序反转,并返回array本身,例如:

 var a=["a","b","c"];
var b=a.reverse();
console.log(a);//["c","b","a"]
console.log(b);//["c","b","a"]

6.array.shift()

返回:移除数组第一个元素并返回该元素。如果这个数组是空的,则返回undefined

shift通常比pop慢得多,例如:

 var a=[[2,3,4],1,"x",true,undefined,null];
var b=[false,undefined,null];
var c=null;
var d=undefined;
var e=[];
console.log(a.shift());//[2,3,4]
console.log(b.shift());//false
console.log(e.shift());//undefined
console.log(c.shift());//报错
10 console.log(b);//[undefined,null]

该方法是在数组本身上操作。

7.array.slice(start,end)

返回:截取的新数组

首先对array中的一段进行浅复制。先复制array[start],一直复制到array[end]为止。end参数是可选的,默认值是该数组长度array.length。

slice方法不可以用在null和undefined上,会报错。

当array为空数组时,返回空数组

var e=[];

console.log(e.slice(0));//[]

slice的操作时不影响原数组的,例如:

 <script type="text/javascript">
var foo=function () {
var a=[[2,3,4],1,"x",true,undefined,null];
var b=[false,undefined,null];
var c=null;
var d=undefined;
var e=[];
//slice的方法
console.log(b.slice(0,1));//[false]
console.log(b);//[false, undefined, null]
console.log(b.slice(1,2));//[undefined]
}
foo();
</script>

8.array.sort(comparefn)

返回:一个排序过的数组,在原数组上排序

不过,排序方法不稳定。例如: var n=[4,8,15,16,23,42]; ,执行n.sort();之后,得到的却是[15,16,23,4,42,8],有点类似于字典排序。因为该方法将每个元素都转化成了字符串。

举例:

 <script type="text/javascript">
var foo=function () {
var a=[[2,3,4],1,"x",true,undefined,null];
var b=[false,undefined,null];
var c=null;
var d=undefined;
var e=[];
//sort的方法
console.log(e.sort());//[]
console.log(a.sort());//[1, Array[3], null, true, "x", undefined]
console.log(b.sort());//[false, null, undefined]
console.log(c.sort());//报错
console.log(d.sort());//报错
}
foo();
</script>

如果想要实现数字的从小到大排序,可以将函数改成如下所示:

 n.sort(function(a,b){
return a-b;//等于0,则两个数相等,小于0,则第一个数排在前面
}
)

若是从大到小,改成b-a即可。b-a为负数,则前一个数排在后一个数前面。

如果是想要实现自定义属性的排序,可以进行如下处理:

 var objectList=new Array();
function Person(name,age){
this.name=name;
this.age=age;
}
objectList.push(new Person('a',20));
objectList.push(new Person('b',25));
objectList.sort(function(a,b){
return a.age-b.age;
}
);

如果想要实现可改变的属性排序,可以进行一下处理:

 var objectList=new Array();
function Person(name,age){
this.name=name;
var _age;
this.age=function(){
if(arguments){
_age=arguments[0];
}else{
return age;
}
} }
objectList.push(new Person('a',20));
objectList.push(new Person('b',25));
objectList.sort(function(a,b){
return a.age()-b.age();
});
);

9.array.splice(start,deleteCount,item……)

返回:一个包含被移除元素的数组。在原数组上操作,主要功能就是删除数组元素,或者替换。

从array中移除一个或多个元素,并用新的item替换他们。参数start是从数组array中移除元素的开始位置。参数deleteCount是要移除的元素个数。如果有额外的参数,那些item会插入到被移除元素的位置上。

例如:

 <script type="text/javascript">
var foo=function () {
var a=[[2,3,4],1,"x",true,undefined,null];
var b=[false,undefined,null];
var c=null;
var d=undefined;
var e=[];
console.log(a.splice(1,1));//[1]
console.log(b.splice(1,1));//[undefined]
console.log(b.splice(1,1,"splice"));//[null]
console.log(b);//[false, "splice"]
console.log(c.splice(1,1));//报错
console.log(d.splice(1,1));//报错
console.log(e.splice(1,1));//[]
}
foo();
</script>

10.array.unshift(item……)

返回:添加后的数组的长度,在原数组上操作

与push方法类似,用于把元素添加到数组中,但是是从开始部分添加不是从尾部添加。

例如:

 <script type="text/javascript">
var foo=function () {
var a=[[2,3,4],1,"x",true,undefined,null];
var b=[false,undefined,null];
var c=null;
var d=undefined;
var e=[];
console.log(a.unshift([]));//
console.log(a);//[Array[0], Array[3], 1, "x", true, undefined, null]
console.log(b.unshift("a"));//
console.log(b);//["a", false, undefined, null]
console.log(c.unshift("[]"));//报错
console.log(d.unshift("[]"));//报错
console.log(e.unshift([]));//
console.log(e);//[Array[0]]
console.log(b.push([]));//
console.log(b);//["a", false, undefined, null, Array[0]]
}
foo();
</script>

JS中数组方法小总结的更多相关文章

  1. js中数组方法大全

    js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...

  2. js中数组方法及分类

    数组的方法有很多,这里简单整理下常用的21种方法,并且根据它们的作用分了类,便于记忆和理解. 根据是否改变原数组,可以分为两大类,两大类又根据不同功能分为几个小类 一.操作使原数组改变   1.数组的 ...

  3. javascript中数组方法小计

    一:数组的常用方法: 1:join(); 将数组转为字符串显示.不输入参数,默认以逗号连接:输入参数,则以参数连接. var arr=[1,2,3]; console.log(arr.join()); ...

  4. JS中数组方法的封装之slice

    slice方法的功能 // 1) : 数组的截取 // 2) :slice(m,n): 从数组索引m开始,截取到索引n,但是不包含n;[前包后不包] // slice(m) : 从索引m开始,截取到末 ...

  5. JavaScript -- 时光流逝(二):js中数组的方法

    JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...

  6. js中数组去重的几种方法

    js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                 ...

  7. js中split()方法得到的数组长度

    js 中split(",")方法通过 ”,“ 分割字符串, 如果字符串中没有 “,” , 返回的是字符串本身 var str = “abc”://分隔符个数为0 var newSt ...

  8. js中数组去重方法及性能对比

    js中数组的 数组去重 常用的数组去重方法以及效率分析: 首先我们先构建一个数组,主要是用于进行去重实验,我们主要实验的量级为1000,10000,100000,500000.具体的生成数组的方法如下 ...

  9. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

随机推荐

  1. 目标检测--之RCNN

    目标检测--之RCNN 前言,最近接触到的一个项目要用到目标检测,还有我的科研方向caption,都用到这个,最近电脑在windows下下载数据集,估计要一两天,也不能切换到ubuntu下撸代码~.所 ...

  2. Mac下XAMPP环境中安装MySQLdb

    环境: Mac OS X. Mac下安装MySQLdb模块着实多了些步骤. 用easy_install或者pip安装时有两大问题,"mysql_config not found"和 ...

  3. git入门篇-----本地操作

    一 ,git的简介 1 ,git的历史 概念性的知识,大家百度一下,就会出现好多优秀的文章供参考,这里我就不多说了. 如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好 ...

  4. mathjax

    MathJax.Hub.Typeset() method. This will cause the preprocessors (if any were loaded) to run over the ...

  5. UI组件之Label

    Use Core Data 接口,链接数据库 Portrait 肖像模式 LandScape(Left, Right) 风景模式 1.程序启动后,从main接口进入, main函数会调用UIAppli ...

  6. a标签包着img事件 ie下 a标签的click事件失效

    整个大的背景框有个点击事件, 如果标签结构是(详细的css样式略) a{background:green;} <a href=""> <img src=" ...

  7. 什么是DDOS攻击?怎么防御?

    一.什么是DDOS? DDOS是英文Distributed Denial of Service的缩写,意即"分布式拒绝服务",那么什么又是拒绝服务(Denial of Servic ...

  8. tp导出excel

    //数据导出 protected function dao($db,$where,$join,$field){ $data = M($db)->join($join)->where($wh ...

  9. LINQ 学习路程 -- 查询例子

    IList<Student> studentList = new List<Student>() { , StudentName = , StandardID = } , , ...

  10. jquery实现自定义弹出框

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...