join()

把数组中所有元素转化为字符串并连接起来,并返回该字符串,

var arr=[1,2,3];
var str=arr.join("#");  //str="1#2#3";

如果没有指定分隔符,则默认为逗号

var str2=arr.join();  //str2="1,2,3";

  

reverse()

在原数组上把元素的顺序颠倒过来,并返回该数组

var arr=[1,2,3];
arr.reverse();  //arr=[3,2,1];

  

sort()

在原数组上对数组元素进行排序,并返回该数组

在没有使用参数的时候,是将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序,如

var arrNum=[2,11,3];
var arrStr=["bb","aa","cc"];
arrNum.sort(); //arrNum=[11,2,3]
arrStr.sort(); //arrStr=["aa","bb","cc"];

对于数组里出现不同类型的元素的时候,比如数字与字符串,数组的元素是数组,当然如果一个数组里的元素有好几种数据类型,如函数,数组,对象,字符串……再对此数组进行排序是没有实际意义的

var arr1=["22",11,3];
var arr2=[[3,2],[111,3,222],[222,333]];
arr1.sort(); //arr1=[11,"22",3];
arr2.sort(); //arr2=[[111,3,222],[222,333],[3,2]];

sort()能接受一个比较函数作为参数,如:

var arrNum2=[3,5,2,1,4];
arrNum2.sort(function(a,b){
return a-b;
}); //arrNum2=[1,2,3,4,5];
arrNum2.sort(function(a,b){
return b-a;
}); //arrNum2=[5,4,3,2,1];

  

concat()

这个不懂怎么描述,直接看结果就明白啥意思了,他放回的是新建的数组,不会对原数组作修改

var arr=[1,2,3];
var arr2=[4,5];
var arr3=[6,7,[8,9]];
var str="hello wrold";
var num=10; arr.concat(arr2); //返回[1,2,3,4,5]
arr.concat(str); //返回[1,2,3,"hello world"]
arr.concat(num); //返回[1,2,3,10];
arr.concat(arr3); //返回[1,2,3,6,7,[8,9]]

slice()

返回指定数组的子数组,返回的是一个新的数组

他接受两个参数,返回的数组包含第一个参数指定位置和所有但不包含第二个参数指定位置的所有数组元素,如

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

如果只指定一个参数,则返回从第一个参数指定的位置开始到数组结尾的所有数组元素,如

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

如果参数是负数,则表示倒数位置,如-1表示倒数第一个元素,-3表示倒数第三个元素,如

var arr=[1,2,3,4,5];
arr.slice(1,-1); //return [2,3,4];
arr.slice(-3,-1);    //return [3,4];
arr.slice(-6,-1);    //return [1,2,3,4];

如果第一个参数比第二个参数大,或者参数值比数组长度大,如下面这些都是放回空数组[]

var arr=[1,2,3,4,5];
console.log(arr.slice(4,1));
console.log(arr.slice(-1,-5));
console.log(arr.slice(8,10));

splice()

splice()插入或删除数组元素的通用方法,是在原数组上操作,会修改原数组,同时原数组的元素索引值会相应的增加或减小;返回的是被删除元素组成的数组,如果被删除的个数为零,则返回空数组[]

第一个参数指定了要插入或删除的元素在数组中的位置,第二个参数指定了从指定位置开始的要删除的元素个数;如果省略了第二个参数,则从起点开始到数组结尾的所有的元素都被删除。

var arr=[1,2,3,4,5,6];
var returnVal=arr.splice(4); //returnVal=[5,6]; arr=[1,2,3,4];
returnVal=arr.splice(1,2); //returnVal=[2,3]; arr=[1,4];
returnVal=arr.splice(1,1); //returnVal=[4]; arr=[1];

插入元素

var arr=[1,2,3,4,5,6];
var returnVal=arr.splice(1,0,'a','b'); //returnVal=[]; arr=[1,'a','b',2,3,4,5,6];
returnVal=arr.splice(1,2,7,[8,9]); //returnVal=["a","b"]; arr=[1,7,[8,9],2,3,4,5,6];

push()与pop()

push():在数组的尾部添加一个或多个元素,并返回数组新的长度

var arr=[];
var returnVal=arr.push("2",3); //arr=[1, "2", 3], returnVal=2;  

pop():在数组的尾部删除一个元素,并返回删除的元素

var arr=[1,2,3];
var returnVal=arr.pop(); //arr=[1, 2], returnVal=3; 

两个方法都修改并替换了原数组

unshift()与shift()

unshift()与shift()方法类似于push()与pop(),只不过他是在数组头部进行插入或删除操作,同时已存在的元素的索引会跟着变得,不会出现稀疏数组

var arr=[1,2];
var returnVal=arr.unshift(3); //arr=[3,1,2], returnVal=3;
var arr=[1,2,3];
var returnVal=arr.shift(); //arr=[2,3], returnVal=1;

  

当一次性插入多个元素,与一个一个插入元素得到的结果是有区别的,如:

var arr=[1,2];
var returnVal=arr.unshift(4); //arr=[4,1,2], returnVal=3;
returnVal=arr.unshift(5); //arr=[5,4,1,2], returnVal=4;
returnVal=arr.unshift(6); //arr=[6,5,4,1,3], returnVal=5; var arr2=[1,2];
var returnVal2=arr2.unshift(4,5,6); //arr2=[4,5,6,1,2], returnVal2=5;

toString()

当然数组也有toString()方法,他与没有参数的join()方法一样返回字符串

var str=[1,"a",3].toString();    //str="1,a,3";

js学习笔记——数组方法的更多相关文章

  1. JS学习笔记-数组

    ECMAScript中没有提供类和接口等的定义,但它却是一门面向对象的语言,由于它能够通过其它 方式实现类似高级语言的面向对象功能,这些内容将在后面的文章中进行一步步的总结.此篇仅对JS中对象作简要说 ...

  2. 【学习】js学习笔记---数组对象

    一.属性 length 数组的大小.数组的length属性总是比数组中定义的最后一个元素的下标大一,设置属性length的值可以改变数组的大小.如果设置的值比它的当前值小,数组将被截断,其尾部的元素将 ...

  3. JS学习笔记——数组去重

    <script type="text/javascript"> //indexOf"是ECMAScript5方法,IE8以下不支持,需多写兼容低版本浏览器代码 ...

  4. Java学习笔记之---方法和数组

    Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...

  5. WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法

    WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...

  6. vue.js 学习笔记3——TypeScript

    目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...

  7. 2019-4-29 js学习笔记

    js学习笔记一:js数据类型   1:基本数据类型       number类型(整数,小数)      String类型          boolean类型        NaN类型其实是一个nu ...

  8. 基于jquery的插件turn.js学习笔记

    基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...

  9. 【转】Backbone.js学习笔记(二)细说MVC

    文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Bac ...

随机推荐

  1. 06 - 从Algorithm 算法派生类中删除ExecuteInformation() 和ExecuteData() VTK 6.0 迁移

    在先前的vtk中,如vtkPointSetAlgorithm 等算法派生类中定义了虚方法:ExecuteInformation() 和 ExecuteData().这些方法的定义是为了平稳的从VTK4 ...

  2. Apache Cloudstack Development 101 -- Data Access Layer

    刚接触CloudStack,也是第一次翻译英文文档,限于水平有限,不当之处欢迎拍砖! 原文地址:https://cwiki.apache.org/confluence/display/CloudSta ...

  3. spark1.1.0源码阅读-dagscheduler and stage

    1. rdd action ->sparkContext.runJob->dagscheduler.runJob def runJob[T, U: ClassTag]( rdd: RDD[ ...

  4. WIN7下关闭驱动数字签名检查的方法

    内容是转的,最后一步貌似没什么用处,水印是去不掉的,不过也无所谓,关键是驱动能用了,要不完全瞎了 实测win7 32位旗舰版可用   ================================= ...

  5. HDOJ(HDU) 1673 Optimal Parking

    Problem Description When shopping on Long Street, Michael usually parks his car at some random locat ...

  6. jetty插件配置

    1.jetty maven 插件启动设置: Base directory:${project_loc} Goals:clean -Djetty.port=8080 jetty:run 2.jetty ...

  7. RequireJS进阶(三)

    进阶的前面两篇讲述了r.js如何通过命令行把所有的模块压缩为一个js文件或把所有的css压缩为一个css文件.其中包括一些压缩配置参数的使用. 但以上两种方式有几个问题 1.通过命令手动配置压缩选项显 ...

  8. (转)Linux下apache限速和限制同一IP连接数的实现

    单位有一台DELL的服务器,4核双CPU,4G内存,1TB的存储空间,闲来无事,申请了域名http://www.zxzy123.cn,做了个网站,本以为用这样的配置做个下载站是绰绰有余了,没想到上线没 ...

  9. 由fprintf和printf看C语言三种标准流

    一.C语言中的三种标准流 1.标准输入流:stdin 2.标准输出流:stdout 3.标准错误输出流:stderr 他们的类型都是File * 二.fprintf于printf的区别 frintf( ...

  10. HTML5 API's (Application Programming Interfaces)

    New HTML5 API's (Application Programming Interfaces) The most interesting new API's are: HTML Geoloc ...