A-A+

Javascript中数组 [ ]、{ } 、Array()

2016年01月13日 web前端设计 暂无评论 阅读 4 views 次

文章来介绍在javascript数组中常用的到的几个符号 [ ]、{ } 、Array()介绍,有需了发解的同学可以参考一下。

一、JS中没有除数字外的字符索引数组

当然!可以这样做,当结果不是你所想的,最常用的是array(),Array 对象用于在单个的变量中存储多个值。

创建 Array 对象的语法:

new Array();

new Array(size);

new Array(element0, element1, ..., elementn);

代码如下:

var p = new Array();

p[0] = '第一个值';

p[1] = '第二个值';

p['h'] = '可以访问这个值';

以上几乎可PHP一样,但是p.length = 2;要想循环输出Array中的值,只能.

for(var key in p){
}

这样有个严重问题,Array中有个prototype属性,可以扩展Array对象的方法,如果这样,代码如下:

Array.prototype.next = function(){};

所有Array对象都会多一个索引值

next:function(){};

上面循环也会多打印一个你意想不到的值

那么,Array的规范是接近C语言中的array,

二、[ ]也就是new Array()

它可以方便的创建多维数组

三、{ }是new Object()

其实这个最接近PHP中的数组,可以说PHP中数组是集Hash Array于一体的.

四、判断是否是array

也许你会想到typeof,但是不管是以上谁创建的对象,应用typeof arr= ‘object’,应该这样判断:

return (arr.constructor==Array);

但是如果你之前应用.

Array.prototype.constructor = function(){}

或:

arr.constructor = function(){}

还是不可完全相信

五、arguments 不是数组

arguments是当前执行的 function 对象返回一个arguments 对象。

function.arguments

function 参数是当前执行函数的名称,可以省略。

arguments包含一些附属属性arguments.callee、arguments.length

用两段代码描述它们,代码如下:

  1.   function param(){  
  2.      var s='';  
  3.      for(var i=0,l=arguments.length;i<l;i++){  
  4.         s += 'param'+ i+' : '+ arguments[i] + 'n';  
  5.      }  
  6.      alert(s);  
  7.    }  
  8.    param(1,2,3);  
  9. function factorial(n){  
  10.   if (n <= 0)  
  11.   return 1;  
  12.   else  
  13.     return n * arguments.callee(n - 1)//等同于factorial(n-1)  
  14. }  
  15. alert(factorial(3));  

看完上面你会想这不是数组嘛!不是用for(var k in arguments)的方式遍历不出arguments[[0|1|2|...|n]

但有些地方需要数组这个特性,我必须把arguments转化为array

prototype.js的做法,代码如下:

  1. var length = iterable.length, results = new Array(length);  
  2.   while (length--) results[length] = iterable[length];  
  3.   return results;  

上面总结了这么多关于javascript数组的一些用法,以及数组中 [ ]、{ } 、Array() 的各种用法.

标签:

给我留言