javascript数组

//下列数组的使用是否合法?
var array = [];
array[-1] = 2;
array["b"] = 1;
array[1,2] = 3;

//下列两种情况要表达的意思是否一样?
array["2"] = 2;
array[2]  = 2;

如果你已能为上述问题做出解答,那么可以忽略接下来我要讲的东西。

javascript中的数组本质是什么?

  1、数组实例本质上是一个对象

var myArr = [];
console.log(typeof myArr);

既然是个对象,那么就有相应的属性和方法,所以object自带的方法,数组实例也有。

  2、对象属性的访问方式

访问对象的属性可以通过点操作符(.)或者中括号操作符([]),中括号操作符比点操作符功能强大的多,能用点操作符的地方都能用中括号操作符,反之不成立;如果你对于jsp中的EL表达式很熟悉的话,下面的东西就很容易理解。

//点操作符右边的属性名必须是合法的标识名
var obj = {};
obj.123 = 2;    //不合法

//中括号中的属性名可以不是合法的标识名,里面还可以放变量
obj["123"] = 2; //合法

var name = "anonymous";
obj[name] = "hello";  // 相当于obj["anonymous"] = "hello";

  3、“数组的下标必须是大于等于0并小于232-1 的整数,如果使用的数字过大,或者使用了负数、浮点数(或布尔值,对象及其他值),javascript会将它转化成一个字符串,用生成的字符串作为对象属性的名字,而不是数组的下标。” ------------这是摘自《javascript权威指南》中的一句话。

  其实不管是不是整数,在数组内部,都是以属性的形式存储的。这也是数组为什么能用于for/in 循环(可以列出一个对象或者数组的所有属性)的原因

var arr = [];
arr.push("bb");
console.log(arr.hasOwnProperty("0")); // 输出true

//数组的for/in循环遍历
var array1 = [1];
array1["aa"]= 2;
for(var index in array1){
  console.log(index);   //输出0,aa; 从这里也可以看出用for/in输出数组元素的弊端,把数组属性全部都输出了。
}

  4、给数组添加属性,对数组length的影响。

var arr = [1,2];
arr["bb"] = 3;
console.log(arr.length); //输出2
原文地址:https://www.cnblogs.com/liuyonglong/p/3647243.html