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. im协议设计选型【转】

    一.im协议的分层设计所谓“协议”是双方共同遵守的规则,例如:离婚协议,停战协议.协议有语法.语义.时序三要素.(1)语法:即数据与控制信息的结构或格式(2)语义:即需要发出何种控制信息,完成何种动作 ...

  2. 使用nginx进行负载均衡

    nginx主要用于1:请求分流 2:负载均衡.用在大型系统(集群)上,在单机上体现不出优势.  本实例在windows环境下进行.  一.安装nginx  1.下载nginx1.8.0版 2.解压至1 ...

  3. ruby on rails 生产环境调试项目日志查看

    1.项目目录:log/production.log 2.nginx日志:/opt/nginx/logs 生产环境下做的任何更改都要重启服务器 重启 sudo kill $(cat /opt/nginx ...

  4. Data Structure Graph: cycle in a directed graph

    geeks上的解答复杂了些,用回溯就行了 #include <iostream> #include <vector> #include <algorithm> #i ...

  5. 【leetcode刷题笔记】Insertion Sort List

    Sort a linked list using insertion sort. 题解:实现链表的插入排序. 要注意的地方就是,处理链表插入的时候尽量往当前游标的后面插入,而不要往前面插入,后者非常麻 ...

  6. Shell中的 >/dev/null 2>&1

    默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入).标准输出(输出到屏幕).标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2 .那么我们来看看下面的几种重定向方法的区别: 1 ...

  7. Spring Cloud之统一fallback接口

    每个方法都配备一个fallback方法 不利于开发的 用类的方式 并且整个方法都是在同一个线程池里面的 主要对于client的修改: pom: <project xmlns="http ...

  8. Idea 包名按树形结构展示

    Idea默认包名展示如图: 感觉这样展示,在包下面建包的时候不方便,可以在 设置按钮 里面去掉 Flatten Packages 和 Compact Empty Middle Packages,设置如 ...

  9. 分享知识-快乐自己:Liunx 搭建 Dubbo

    1.首先配置JDK  操作步骤 2.部署 Tomcat ① 上传 Tomcat 7  解压jdk文件:tar -zxvf jdk文件名称 ② tomcat目录下的bin/启动tomcat ③ tail ...

  10. 热门游戏 2048 C++ 源代码分享

    /*By Reason*/ #include<iostream> #include <iomanip> #include<math.h> #include<s ...