zoukankan      html  css  js  c++  java
  • JavaScript Array(数组)

    一、简介

    1、JavaScript数组的元素可以是任何类型的。

    2、JavaScript数组可以是稀疏的,这是数组的长度和索引值不一致。

    3、JavaScript数组是一个特别的对象。索引就是这个数组对象的属性,只不过恰巧数组的属性是一系列整数字符串而已。

    二、数组创建

    1、var x=12;var arr=[x,x+1,x+2];//数组的元素不一定要是常量,也可以为表达式。每次引用数组,都会对表达式求值。

    2、var y=[1,,2,,,];//数组不是每个元素要是指定,没指定的值为undefined,并且忽略最后一个逗号,所以这个数组有5个元素,而不是六个,分别为:1,undefind,2,undefined,undefined

    3、var arr=new Array();//通过Array构造函数创建

      arr=new Array(10);//如果构造参数为单个数值,参数表示的是创建的数组的长度

      arr=new Array("10");arr=new Array(1,2);//如果构造函数的参数为单个非数值或者参数个数大于一个,参数表示的是数组的元素。

    三、数组的长度length

    1、数组的长度,不一定等于数组的元素个数。如:var a=[];a[10]=0;//数组a长度为11,当时元素个数为1

    2、数组永远满足不等式length>数组索引的最大值。为了保持这个不等式,JavaScript在操作数组的时候自动做两件事:

    a.给数组添加元素的时候,length自动增长。

    b.设置数组长度的时候,如果新的长度小于数组已有元素数目,数组多余的元素会被删除。

    四、数组元素的增加和删除

    1、增加:var a=[];

    方式一:a[0]=1;a[1]=2;

    方式二:a.push(3);a.push({x:1,y:2});a.push("one","two");

    2、删除:var a=[1,2,3];

    方式一:使用delete删除:delete a[1];//元素2被删除了,1 in a返回false,但是删除不影响数组的长度,所以a.length还是等于3

    方式二:使用数组函数,如:pop(),slice(),shift()等等也可以达到删除的目的,把数组的length设小,也可以删除元素。

    五、数组函数

    1、join()/reverse()/sort()/concat()/slice()/splice()/push()/pop()/shift()/unshift()/toString()/toLocaleString()

    2、ES5的方法:forEach()/map()/filter()/every()/some()/reduce()/reduceRight()/indexOf()/lastIndexOf()

    六、数组类型

    数组一个特别的对象,那么如何确定一个对象是数组呢?

    1、Array.isArray()函数可以判断:Array.isArray([]);//return true   Array.isArray({});//return false

    2、instanceof操作符:[] instanceof Array;//return true    ({}) instanceof Array;//return false

    七、类数组或者伪数组对象

    有一些对象,也具有length属性,他们表现的像一个数组,如:document.getElementsByTagName()的返回值。

    类数组不是数组,所以不能直接调用数组的方法,比如sort,concat等。但是可以通过另一种方法来调用(这得益于数组的方法都被设计成泛型方法了):

    var a={0:"a",1:"b",2:"c",length:3};//这是个对象,但是是个类数组 array-like object

    Array.prototype.join.call(a,"+");//返回"a+b+c"

    八、字符串作为数组

    字符串可以作为只读数组,通过[]访问字符串中的字符。数组的方法通过原型调用的方式也可以应用到字符串上,如

    var s="test";

    s[2]//return "s"

    Array.prototype.join.call(s," ")//return "t e s t";

  • 相关阅读:
    UITableView的简单使用
    Oracle相关博客转移
    使用Outlook 2010,拖拽大于20M附件发生“附件大小超过了允许的范围”提示的解决方法
    Use OpenLDAP as security provider in Oracle UCM 11g
    PostBuild event不能注册到全局缓存解决办法
    WIN7下丢失的光驱解决办法:由于其配置信息不完整或已损坏,Windows 无法启动这个硬件设备
    我与计算机的故事
    nova http 409 虚拟机状态重置
    百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换(JS版代码)
    未能从程序集加载类型
  • 原文地址:https://www.cnblogs.com/winson/p/3343045.html
Copyright © 2011-2022 走看看