JS数组

来源:互联网 发布:移动网络切换 编辑:程序博客网 时间:2024/06/16 14:54

来源《JavaScript权威指南》


JS参考手册:http://www.w3school.com.cn/jsref/index.asp


(1)JS数组是无类型的:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。
(2)JS数组的索引是基于0 的32位数值。
(3)JS数组是动态的,长度会根据需要动态增长或缩减。
(4)JS数组可能是稀疏的:数组元素的索引不一定要连续,他们之间可以有空缺。
(5)JS数组是JS对象的特殊形式。
(6)JS数组继承自 Array.prototype中的属性,它定义了一套丰富的数组操作方法。

一、创建数组
(1)数组直接量[ ]
如果省略数组直接量中的某个值,省略的元素将被赋予undefined值。
允许有可选的结尾的逗号,故[ , , ]只有两个元素而非三个。

(2)构造函数创建数组
var a = new Array(); //空数组
var a = new Array(10); //指定长度为10
var a = new Array(5, 4, 3, 2, 1, "testing, testing"); //指定元素

二、数组元素的读和写
使用[ ]
注意:可以使用负数或者非整数来索引数组。这时候,数值转换成字符串,字符串作为属性名来用。


三、稀疏数组
四、数组长度length
(1)数组长度会自动增加。
(2)设置length属性为一个小于当前长度的非负整数n时,当前数组中的那些索引值大于或者等于n的元素将从中删除。
(3)可以使用Object.defineProperty()设置数组的length属性为只读。

五、数组元素的添加和删除
Array 对象方法
方法描述concat()连接两个或更多的数组,并返回结果。join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。pop()删除并返回数组的最后一个元素push()向数组的末尾添加一个或更多元素,并返回新的长度。reverse()颠倒数组中元素的顺序。shift()删除并返回数组的第一个元素slice()从某个已有的数组返回选定的元素sort()对数组的元素进行排序splice()删除元素,并向数组添加新元素。toSource()返回该对象的源代码。toString()把数组转换为字符串,并返回结果。toLocaleString()把数组转换为本地数组,并返回结果。unshift()向数组的开头添加一个或更多元素,并返回新的长度。valueOf()返回数组对象的原始值

六、数组遍历
(1)使用优化的for循环
for(var i = 0, len = arr.length; i < len; i++) {
//操作
}
for(var i = 0, len = arr.length; i < len; i++) {
if( !arr[i] ) continue; //跳过null、(undefined和不存在的元素)
//循环体
}
for(var i = 0, len = arr.length; i < len; i++) {
if( arr[i] == undefined ) continue; //跳过(undefined和不存在的元素)
//循环体
}
for(var i = 0, len = arr.length; i < len; i++) {
if( ! (i in arr) ) continue; //跳过 不存在的元素
//循环体
}

(2)使用for/in循环处理稀疏数组。
for(var index in sparseArray) {
var value = sparseArray[index];
//此处可以使用索引和值做事情
}
注意:使用for/in循环能够枚举继承的属性名。‘
过滤方法:
for (var i in a) {
if( !a.hasOwnProperty(i)) continue; //跳过继承的属性
//循环体
}

(3)使用forEach()
var data = [1,2,3,4,5];
var sum = 0;
data.forEach(function(x) {
sum += x;
});
console.log(sum);

七、多维数组 matrix[x][y]
八、数组方法
在Array.prototype中定义了一些操作数组的方法,他们可以被任何数组使用。

九、ECMAScript 5中的数组方法
写在前面:每个方法的第一个参数都是一个函数,函数中最多有三个参数:s数组元素、元素的索引、数组本身。
(1)forEach( )
从头至尾遍历数组,为每个数组元素调用指定的函数。

(2)map()
将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。

(3)filter()
该方法返回的数组元素是调用的数组的一个子集。

(4)every()和some()
用来数组的逻辑判定:他们对数组元素应用指定的函数进行判定,返回true或者false。



(5)reduce()和reduceRight()
使用指定的函数将数组元素进行组合,生成单个值。 使用例子??

(6)indexOf()和lastIndexOf()
搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引,如果没有找到返回-1。
indexOf()正向,lastIndexOf()反向。


十、数组类型
判断是不是数组的方法:
ECMAScript 5 中使用Array.isArray( )判断。
例子:






1 0
原创粉丝点击