你不知道的JavaScript(二)数组
2015-05-16 20:13
253 查看
作为一种线性数据结构,几乎每一种编程语言都支持数组类型。和c++、java这些强类型的语言相比,JavaScript数组有些不同,它可以存放任意类型的值。上节中有提到过JS中任意类型的值都可以赋值给任何一个变量,所以从数组中取出不同类型的值时也就不存在类型转换安全问题。
JS数组的使用非常简单,只是有些细节可能容易被忽略,下面是数组的定义:
数组定义很简单,通过一个中括号[ ]来声明,可以在声明时指定元素值,每个元素用逗号隔开,元素可以是任意类型。上节提到过,数组也属于object类型,我们可以通过它的length属性来获取数组的长度。
JS数组的长度是不固定的,可以在程序中随意增加或减少数组长度。
在c++、java这些强类型的语言中数组的下标只能是整型或者char类型,JS数组并不是这样的,它的下标可以是上节讲到的数据类型中的任何一种,看下面的例子:
有点凌乱了吧,我们可以將一个小数作为数组下标arr[1.3]=3,然后可以通过arr[1.3]获取下标的值。字符串作为下标时稍微特殊一点,我们不仅可以通过arr[“age”]来获取下标对应的值,还可以使用arr.age这种形式。我们甚至可以定义一个函数func,使用函数名作为下标。
最后我们使用arr.length获取数组的长度,发现长度为1,这是怎么回事呢?
我们来通过代码分析一下:
可以看到通过length属性获得数组的长度实际上并不准确,它的值是数组的最大整数下标+1。
为了避免数组下标出现不连续的情况,我们通常將数组作为栈来操作,需要增加数组长度并向数组中添加元素时调用push函数,减少数组长度同时移除元素可以调用pop方法。
案例代码如下:
页面输出:
JS数组的使用非常简单,只是有些细节可能容易被忽略,下面是数组的定义:
<script type="text/javascript"> function func(){ console.log("func function!"); } var obj = { name:"Jane", age:30 } var arr = [1,func,obj]; alert(typeof arr[1]);//function alert(arr.length);//3 </script>
数组定义很简单,通过一个中括号[ ]来声明,可以在声明时指定元素值,每个元素用逗号隔开,元素可以是任意类型。上节提到过,数组也属于object类型,我们可以通过它的length属性来获取数组的长度。
JS数组的长度是不固定的,可以在程序中随意增加或减少数组长度。
<script type="text/javascript"> var arr = []; arr[0] = 1; arr[1] = 2; alert(arr.length);//2 arr[2] = 3; alert(arr.length);//3 </script>
在c++、java这些强类型的语言中数组的下标只能是整型或者char类型,JS数组并不是这样的,它的下标可以是上节讲到的数据类型中的任何一种,看下面的例子:
<script type="text/javascript"> function func(){ }; var arr = []; arr[0] = 1; arr[1.3] = 3; alert(arr[1.3]);//3 arr["age"] = 23; alert(arr["age"]);//23 alert(arr.age);//23 arr[undefined] = "undef"; alert(arr[undefined]);//undef arr[func] = "func"; alert(arr[func]);//func alert(arr.length);//1 </script>
有点凌乱了吧,我们可以將一个小数作为数组下标arr[1.3]=3,然后可以通过arr[1.3]获取下标的值。字符串作为下标时稍微特殊一点,我们不仅可以通过arr[“age”]来获取下标对应的值,还可以使用arr.age这种形式。我们甚至可以定义一个函数func,使用函数名作为下标。
最后我们使用arr.length获取数组的长度,发现长度为1,这是怎么回事呢?
我们来通过代码分析一下:
<script type="text/javascript"> function func(){}; var arr1 = []; arr1[0] = 1; arr1[4.3] = 1; alert(arr1.length);//1 var arr2 = []; arr2[0] = 1; arr2[4] = 1; alert(arr2.length);//5 var arr3 = []; arr3[0] = 1; arr3[4] = 1; arr3["hello"] = "hello"; alert(arr3.length);//5 </script>
可以看到通过length属性获得数组的长度实际上并不准确,它的值是数组的最大整数下标+1。
为了避免数组下标出现不连续的情况,我们通常將数组作为栈来操作,需要增加数组长度并向数组中添加元素时调用push函数,减少数组长度同时移除元素可以调用pop方法。
案例代码如下:
<script type="text/javascript"> var func = function(){}; var arr = []; arr.push(func); arr.push(1); arr.push(10); arr.push("hello"); arr.push("world"); for(i=0;i<arr.length;i++) { document.writeln(arr[i]); } arr.pop();//去除最后一个元素,并返回元素值 document.writeln("<br/>"); for(i=0;i<arr.length;i++) { document.writeln(arr[i]); } </script>
页面输出:
相关文章推荐
- 关于JavaScript数组你所不知道的3件事
- 关于JavaScript数组,你所不知道的3件事
- 你所不知道的JavaScript数组
- JavaScript中你所不知道的数组ArrayBuffer
- JavaScript中你所不知道的数组ArrayBuffer
- 关于JavaScript数组,你所不知道的3件事
- 你不知道的JavaScript--Item30 数组进阶全掌握
- JavaScript中你所不知道的数组ArrayBuffer
- JavaScript中你所不知道的数组ArrayBuffer
- 你不知道的JavaScript(二)数组
- 你不知道的JavaScript(二)数组
- JavaScript你不知道的一些数组方法
- JavaScript中你所不知道的数组ArrayBuffer
- 关于JavaScript数组,你所不知道的3件事
- 你所不知道的JavaScript数组
- 你所不知道的javascript数组特性
- javascript 对象,对象数组转成字…
- 翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 8 章:列表操作
- 定义JavaScript二维数组采用定义数组的数组来实现
- 原生JavaScript实现合并多个数组示例