JavaScript-Array 对象及方法(上)

来源:互联网 发布:金和软件股票 编辑:程序博客网 时间:2024/06/07 05:46

1. 创建数组对象的方式

1. 数组字面量

js中的数组对象可以通过构造函数Array()来创建,但同时也可以用字面量表示,且更简单更可取。

var a = ["Ary","Snow","Sansa"];console.log(typeof a);//输出"object",这是由于数组本身也是对象类型console.log(a.constructor===Array);//true

2. 数组构造函数

  • 先声明,然后再赋值:
var a = new Array();a[0]="Ary";a[1]="Snow";a[2]="Sansa";
  • 直接在创建时赋值:
var a = new Array("Ary","Snow","Sansa");
  • 注意:
    当向Array()构造函数传入单个数字时,它并不会成为数组的第一个元素的值,反而会设置数组长度。
//长度为3的数组var a = new Array(3);console.log(a.length);//3console.log(a[0]);//undefined,这是因为只限定了数组长度,而数组中并不存在任何元素值//具有一个元素的数组var a =[3];console.log(a.length);//1console.log(a[0]);//3//如果该值为数值,但小于0或不为整数,发生运行时错误。var a = new Array(3.12);//Uncaught RangeError: Invalid array length(错误范围,不合法的数组长度)console.log(a.length);//Cannot read property 'length' of undefinedconsole.log(a[0]);//Cannot read property '0' of undefinedconsole.log(typeof a);//输出"undefined"

2. 数组对象的属性

constructor 属性 | length 属性 | prototype 属性

1. constructor属性

对象的constructor 属性用于返回创建该对象的函数,也就是我们常说的构造函数。

// 数组:Array()var arr = [1, 2, 3];document.writeln(arr.constructor); // function Array() { [native code] }document.writeln(arr.constructor === Array); // true

2. length 属性

因为一个数组中的元素并不一定是连续的,所以 length 属性也并不一定就等于数组中的元素个数。例如:

var my_array = new Array( );my_array[0] = "Test";my_array[6] = "Another Test";my_array.length;//7
  • 如果 length 属性被赋予了一个比原先值小的数值,那么数组就被截断,所有数组下标等于或者大于 length 属性的新值的元素都会被丢失。
  • 如果 length 属性被赋予了一个比原先值大的数值,那么数组就被扩展,且所有新建元素都被赋值为 undefined。

3. prototype 属性

返回对象类型 原型 的引用。
Array.prototype.max = array_max;

3. 数组对象的方法

1. join 方法

返回字符串值,其中包含了连接到一起的数组的所有元素,元素由指定的分隔符分隔开来。
arr.join(“”)

 var a, b,c;    a = [0,1,2,3,4,'10','js']; b = a.join("-");c=a.join("");console.log(b);//0-1-2-3-4-10-jsconsole.log(c);//0123410js
  • split()方法:用于把一个字符串分割成字符串数组. 与join相对应,但显然并不是数组对象的方法
    str.split(a,num);
    1. 以a为分割点,必填
    2. num返回的新的数组的长度
var str,str1,str2;str = "这是一段话_很好的一段话_!";str1=str.split("_",2);//["这是一段话", "很好的一段话"]str2=str.split("");//["这", "是", "一", "段", "话", "_", "很", "好", "的", "一", "段", "话", "_", "!"]

2. push、pop、shift、unshift 方法

方法 语法 参数 作用 push arrj.push(ele1,ele2,…,eleX) 该 Array 的新元素,可选 向数组的尾部添加一个或多个元素,并返回新的长度 unshift arrj.unshift (ele1,ele2,…,eleX) 该 Array 的新元素,可选 向数组的头部添加一个或多个元素,并返回新的长度 pop arr.pop() 无,填入数值无作用 pop() 方法用于删除并返回数组的最后一个元素。数组长度发生变化 shift arr.shift() 无,填入数值无作用 shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。数组长度发生变化

**注意:**1、以上方法是直接对原数组进行的操作。2、使用pop,shift方法时,如果原数组为空,那么将返回 undefined。
3、个人为避免记错:(这四个方法,含有字母u的,都是添加操作,有参数;含有字母p的,都作用于数组尾部)

例:

var arr=['a','b','c','d'],arr0=[];arrPush=arr;for(var i=0;i<3;i++){arr.push(i);}arr0.pop();     //undefinedconsole.log(arr);//["a", "b", "c", "d", 0, 1, 2]arr.unshift("head");    //8console.log(arr)//["head", "a", "b", "c", "d", 0, 1, 2]arr.shift()     //headarr.shift()     //"a"arr.pop()       //2

3. concat 方法

返回一个新数组,这个新数组是由两个或更多数组组合而成的。
arrayObject.concat(array1,array2,…,arrayN)

本方法在使用时,会进行两个操作:连接,复制

例:

var arr=[1,2,3];console.log(arr.concat(4,5,"6"));//[1, 2, 3, 4, 5, "6"]console.log(arr.concat(4,5,"6").join(""));//123456console.log(arr.concat(arr,4,5,"6"));//[1, 2, 3, 1, 2, 3, 4, 5, "6"]
function ConcatArrayDemo(){   var a, b, c, d;     a = new Array(1,2,3);  b = "Hello";    c = new Array(42, "JavaScript");  d = a.concat(b, c);  return(d);}ConcatArrayDemo();//[1, 2, 3, "Hello", 42, "JavaScript"]
0 0