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. android 安卓 微信布局 [1]

    微信布局 直接上代码吧 ---------------------------------------- 头部 -------------------------------------------- ...

  2. MarkdownPad 使用 MathJax

    一直想要在MarkdownPad中支持数学公式,终于找到了一个方法: 在MarkdownPad中,点击"Tools > Options > Advanced > HTML ...

  3. Android 部分属性学习

    android:imeOptions属性 谈一下个人的理解,设置软件盘中下一个/完成按钮的显示,如果需要监听软件盘中该按钮的事件,则需要实现 setOnEditorActionListener 其实, ...

  4. 转:exit()与_exit()的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载. 从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构:exit 函数则在这些基础上做了 ...

  5. spark1.1.0源码阅读-taskScheduler

    1. sparkContext中设置createTaskScheduler case "yarn-standalone" | "yarn-cluster" =& ...

  6. HTTP缓存机制[译文]

    本文翻译自: https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching ,主要用于个人记录和共享,若有疏漏错误,请不吝指正,谢谢! 通过重用已 ...

  7. Altium Designer 蛇行等长布线

    一. 设置需要等长的网络组 点击主菜单 Design --> Classes,在弹出的窗口中单击 Net Classes,并右键,点 Add Class 会增加一个 New Class,在该网络 ...

  8. 8.2.1.15 ORDER BY Optimization ORDER BY 优化

    8.2.1.15 ORDER BY Optimization ORDER BY 优化 在一些情况下, MySQL 可以使用一个索引来满足一个ORDER BY 子句不需要做额外的排序 index 可以用 ...

  9. COJ 0979 WZJ的数据结构(负二十一)

    WZJ的数据结构(负二十一) 难度级别:C: 运行时间限制:5000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 请你实现一个数据结构,完成这样的功能: 给你一个 ...

  10. HDOJ 1282 回文数猜想(回文串类)

    Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...