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. string标准库的使用

    string s; s.empty() 如果 s 为空串,则返回 true,否则返回 false. s.size() 返回 s 中字符的个数 s[n] 返回 s 中位置为 n 的字符,位置从 开始计数 ...

  2. Keil C51 中的函数指针和再入函数

    函数指针是C语言中几个难点之一.由于8051的C编译器的独特要求,函数指针和再入函数有更多的挑战需要克服.主要由于函数变量的传递.典型的(绝大部分8051芯片)函数变量通过堆栈的入栈和出栈命令来传递. ...

  3. 如何判断一个C++对象是否在堆栈上(通过VirtualQuery这个API来获取堆栈的起始地址,然后就可以得到答案了),附许多精彩评论

      昨天有人在QQ群里问到如何判断一个C++对象是否在堆栈上, 我在网上搜索了下, 搜到这个么一个CSDN的帖子http://topic.csdn.net/t/20060124/10/4532966. ...

  4. 对libssh的golang 封装 ssh2go

    ssh2go 是对libssh的go语言绑定.libssh作为ssh的实现库,支持SSHv2和SSHv1的客户.服务端实现,通过libssh你可以远程执行程序.拷贝文件等等. ssh2go不像其他go ...

  5. windows 10是如何做到全平台统一的?

    1.EXE本身就是个容器,它可以在ARM平台上包含ARM的native code执行,也可以在x86平台上包含x86的native code执行,本质上无差别(所以麻烦那些说EXE不能在ARM平台上运 ...

  6. BZOJ3397: [Usaco2009 Feb]Surround the Islands 环岛篱笆

    3397: [Usaco2009 Feb]Surround the Islands 环岛篱笆 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 11  So ...

  7. java笔记4之比较运算符

    /*    比较运算符:        ==,!=,>,>=,<,<=            特点:        无论你的操作是简单还是复杂,结果是boolean类型.   ...

  8. CSS 代码是什么?(转)

    转自:http://www.divcss5.com/rumen/r95.shtml CSS 代码是什么,什么是CSS代码? 目录 什么是CSS css代码样子(图) 作用 相关扩展阅读 一.了解什么是 ...

  9. Java[2] 分布式服务架构之java远程调用技术浅析(转http://www.uml.org.cn/zjjs/201208011.asp)

    转自:http://www.uml.org.cn/zjjs/201208011.asp 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如: ...

  10. CSS常用操作-对齐

    index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...