使用js时候,很多情况下要使用数组。就写写数组中一些常用的方法。

js中定义一个数组,一般有以下2种方法。

1. var arr = new Array(3); // 声明数组有3个元素

arr[0] = 1;     arr[1] = 2;     arr[2] = 3;

再比如这样  var arr = new Array("test"); // 数组中有个元素test

2. var arr = [1,2,3,4];  // 这种方式更受推荐

数组中有个重要属性length,就是数组元素个数,数组的长度。

有个有趣的用法,比如声明数组中的第一种方法时,我定义了有3个数组元素的arr,这时我想再添加一个元素,这时可以使用length

比如arr[arr.length] = 4;// 这就是在数组后,再追加一个元素

有个值得注意的是,length这个属性,可能不是表面上你添加了几个元素就是几个。

比如:

var arr = [1,2,3];

arr[9] = 11;

这时可能你只给了4个元素,分别是1,2,3,11。但是length并不是4,而是10。但是你访问arr[3..]都是undefined,即arr[5] == undefined。

检测一个变量是不是数组:

一般使用

if (arr instanceof Array){
  //
}

这个存在局限性,不过大多数情况下满足。比较新的市面浏览器现在支持这种方法:

if (Array.isArray(arr)){
    //
}

常用的方法

连接数组concat()

var arr1 = [1, 2, 3];

var arr2 = [3, 4, 5];

var arr3 = arr1.concat(arr2);// [1,2,3,3,4,5]

有个比较巧妙的克隆数组的方法:在concat()不填参数。比如:

var arr4 = arr1.concat();// [1, 2, 3]

转化成字符串:

var arrToStr = arr.toString();// 这个是把各个元素以逗号分隔

var arrToStr = arr.join(',');// join中传入逗号参数时,和上边的toString()效果一样。当然join可以传入其他分隔符

数组模拟了数据结构中栈和队列的方法。稍微注意下每个方法的返回值

比如模仿栈的方法,有push,pop。后进push先出pop

队列的方法,有shift,unshift。从数组头部进入unshift,头部出去shift

数组位置的查找方法,也是很常用的一个。现在流行的浏览器开始支持。也很容易理解。注意第二个参数的含义,表示从哪个位置开始查找,可以为负值。

如果查不到,就返回-1

var arr = [1,2,3,4,5,6,1,7];

比如我要查找1的位置。

arr.indexOf(1, 0);// 0

arr.indexOf(1, 1);// 6

arr.indexOf(1, -2);// 6

arr.indexOf(1, -999);// 0 超过长度以后,负值就从0开始了,所以查到的还是第一个位置的1

lastIndexOf()方法一样道理。

现在的浏览器也支持一些迭代方法。比如map,filter,forEach等等。就不举例子了。

另一个比较常用的方法slice。接收两个参数,start,end。取出数组中的一部分连续元素。这个方法会再生成一个子数组。

再有一个数组很强大的方法隆重介绍哈哈。splice(); 支持数组的增删改。主要用途还是往数组中间插入元素。

值得注意的是,这个方法区别于slice方法,它会改变原数组。

var arr = [1,2,3,4,5];

删除:传入2个参数,要删除第一项的位置(这里所说的位置都是指下标),和删除的项目数。比如

  arr.splice(2, 99);// [1,2]

增加作用实际也算是修改了哈哈。如下:

修改:传入3个参数,起始位置,删除的项目数(如果是增加作用,此处就写0),增加的项目(增加多个就写多个);这个就是splice()的主要作用---中间插入。

  arr.splice(2,1,7,8,9);// [1,2,7,8,9,4,5]   就是把元素3换成了7,8,9

好了,数组常用的基本就这样了。

js中数组的使用的更多相关文章

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

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

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

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

  3. php和js中数组的总结

      php中数组的表示方法:array()或者[] js中数组的表示方法:new array()或者[] 一.php中初始化命名数组 在PHP中声明数组的方式主要有两种:一是应用array()函数声明 ...

  4. JS中数组的介绍

    一.数组: 一组数据的集合: 二.JS中数组的特点: 1.数组定义时无需指定数据类型: 2.数组定义时可以无需指定数组长度: 3.数组可以存储任何类型的数据: 4.一般是相同的数据类型: 三.数组的创 ...

  5. js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join

    js中数组增删查改unshift.push.pop.shift.slice.indexOf.concat.join

  6. js中数组如何使用

    js中数组如何使用 一.总结 一句话总结:new Array()和[]两种方法都可以创建数组. 二.js中创建数组,并往数组里添加元素 数组的创建 var arrayObj = new Array() ...

  7. js中数组方法大全

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

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

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

  9. js中数组扁平化处理

  10. js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)

    js中遍历数组的有两种方式 var array=['a'] //标准的for循环 for(var i=1;i<array.length;i++){ alert(array[i]) } //for ...

随机推荐

  1. 使用标准C读取文件遇到的结构体对齐问题及其解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 同事使用标准C库读取文件,发现总是读取不对,让我帮忙看一下. 原来他定义了如下一个结构体: // 定义块的结构 typ ...

  2. python turtle 绘制图像

    def _circle(): t = turtle.Turtle() t.pencolor("yellow") t.pensize(5) t.speed(200) t.circle ...

  3. 一致性Hash(Consistent Hashing)原理剖析

    引入 在业务开发中,我们常把数据持久化到数据库中.如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取.读取数据的过程一般为: ...

  4. 转:C# 深入理解堆栈、堆在内存中的实现

    尽管在.NET framework下我们并不需要担心内存管理和垃圾回收(GarbageCollection),但是我们还是应该了解它们,以优化我们的应用程序.同时,还需要具备一些基础的内存管理工作机制 ...

  5. SmartUpload相关类的说明

    ㈠ File类 这个类包装了一个上传文件的所有信息.通过它,可以得到上传文件的文件名.文件大小.扩展名.文件数据等信息. File类主要提供以下方法: 1.saveAs作用:将文件换名另存. 原型: ...

  6. sql点滴43—mysql允许用户远程登陆

     方法1 局域网连接mysql报错: ERROR 1130: Host '192.168.0.220' is not allowed to connect to this MySQL server 解 ...

  7. NoSQL——not onlySQL不仅仅是SQL

    数据有很大一部分是由关系数据库管理系统(RDBMS)来处理. 1970年 E.F.Codd's提出的关系模型的论文 "A relational model of data for large ...

  8. DevExpress06、Popup Menus、RadialMenu、XtraTabControl、SplitContainerControl、GroupControl

    Popup Menus 弹出菜单 使用弹出菜单(popup menus),我们可以在   控件上   显示   上下文选项   或  命令. 弹出菜单是一个显示了特定项的窗体,用户可以选择这些项以执行 ...

  9. Mysql表类型(存储引擎)的比较

    面试官问:你知道mysql有哪些存储引擎,区别是啥? 我:一脸闷逼,于是乎下来补一补,以作备查 1.和大多数数据库不同,MySQL 中有一个存储引擎的概念,针对不同的存储需求可以选择最优的存储引擎. ...

  10. 9.算法之顺序、二分、hash查找

    一.查找/搜索 - 我们现在把注意力转向计算中经常出现的一些问题,即搜索或查找的问题.搜索是在元素集合中查找特定元素的算法过程.搜索通常对于元素是否存在返回 True 或 False.有时它可能返回元 ...