标签:
数组
一、数组的定义
数组是值得有序集合。每个元素在数组中有一个位置,以数字表示,称为索引。JavaScript数组是无类型的,所以可以创建复杂的数组如对象的数组和数组的数组。每个数组都有一个length属性。JavaScript数组是对象的特殊形式,数组实际上是和碰巧是整数的属性名差不多。通常数组是经过优化的,用数组索引来访问元素比常规的对象属性要快得多。在ECMSScript中,字符串的行为与字符数组类似。
二、数组的创建
1、使用Array()构造函数
var colors = new Array(20); var colors = new Array("red","blue","green");
2、数组字面量表示法
var colors = ["red","blue","green"];
三、数组的读和写
使用[]操作符来访问数组中的一个元素。方括号中是一个返回非负整数值得任意表达式。
var colors = ["red","blue","green"] colors[2] = "black"; //修改 colors[3] = "brown" //新增
记住:数组是对象的特殊形式。使用方括号访问数组元素就像使用方括号访问对象的属性一样。JavaScript将制定的数字索引转换成字符串—索引1变成"1",然后将其作为属性名来使用。对象也可这么做。
o = {};
o[1] = "one";
四、稀疏数组
稀疏数组就是包含从0开始的不连续的数组
五、数组的长度(length)
1、如果为一个数字赋值,它的索引i大于或等于现有数组的长度时,length属性的值将设置为i+1;
2、length属性的值为一个小于当前长度的非负整数n时,当前数组中那些索引值大于或等于n的元素将从中删除
a=[1,2,3,4,5]
a.length = 0; //删除所有数组元素
六、数组遍历
1、for循环是遍历数组元素最常见的方法
var o = { x:1,y:2,z:3 } var key = Object.keys(o); var value = []; for (var i=0, len = key.length; i<len; i++) { value[i] = o[key[i]]; }
2、forEach()
作用:从头到尾遍历数组,为每个元素调用指定函数
参数:数组元素、元素的索引、数组本身
var data = [1,2,3,4]; var sum = 0; data.forEach(function(value) { sum+=value; });
3、map()
作用:将调用的数组的每个元素传递给指定的函数,并返回一个数组
a = [1,2,3]; b = a.map(function(x) { return x*x });
4、filter()
作用:返回的数组元素时调用的数组的一个子集。传递的函数时用来逻辑判定的:该函数返回true或false.如果返回值为true或能转换为true的值,它将被添加到一个座位返回值的数组中。
5、every和some
every()
作用:数组中的所有元素调用判定函数都返回true,它才返回true
a = [5,4,3,2,1] a.every(function(x){ return x<10; }) //=>true
some()
作用:当数组中至少有一个元素调用判定函数返回true,它就返回true;并且仅当函数中的所有元素调用判定函数都返回false,它才返回false
a = [5,4,3,2,1] a.some(function(x) { return x%2===0;})
6、reduce()和reduceRight()
两个函数都会迭代数组的所有项,然后构建一个最终返回的值,其中reduce从数组第一项开始,reduceRight从数组最后一项开始
这两个方法都接收2个参数:一个在每一项上都调用的函数和(可选的)作为归并基础的初始值。传递的函数需要接收4个参数:前一个值,当前值,项的索引和数组对象。这个函数的返回值会作为第一个参数传递给下一项,第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数是数组的第二项。
var value = [1,2,3,4,5]; var sum = value.reduce(function(prev,cur,index,array){ return prev + cur; }); //sum = 15
七、数组方法
获取数值字符串:
(1)toString(); 返回由数组中的每个值以字符串形式拼接而成的一个以逗号分隔的字符串
(2)valueOf(); 返还的还是数组
(3)toLocaleString();
(4)join(); 指定分隔符
例:var colors = ["red","blue","green"];
alert(colors.toString()); //red,blue,green
alert(colors.valueOf()); //red,blue,green
alert (color.join("||"));
栈方法:LIFO(last-in-fisft-out)
插入和移除数据,只发生在栈的顶部
(1)push() 可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度
(2)pop() 从数组末尾移除最后一项,并返回移除的项
队列方法:FIFO(first-in-first-out)
队列列表的尾端添加项,从列表的前端移除项
(1)push() 可以接收任意数量的参数,把它们逐个添加到数组的末尾
(2)shift() 移除数组的第一个项并返回该项
排序方法:
(1)reverse(): 反转数组的顺序
(2)sort :按升序顺序排列数组
连接方法:
contact(): 先创建当前数组一个副本,然后将接收到的参数添加大这个副本的末尾
获取子数组方法:
slice(): 基于当前数组的一项或者多项创建新数组
slice(x,y) x:起始位置y: 结束位置
(3)splice()
删除:splice()
插入:splice()
替换:splice()
位置方法:
(1)indexOf():从头开始向后找
(2)lastIndexOf(): 从末尾开始往前找
八、类数组对象
JavaScript数组独有的一些特性:
1、当有新的元素添加到列表中时,自动更新length属性。
2、设置length为一个较小值将截断数组。
3、从Array.prototype中继承一些特有的方法。
4、其类属性为"Array"
可以把拥有一个数值length属性和对应非负数整数属性的对象看做一种类型的数组。虽然不能直接在它们之上直接调用数组方法,但仍然可以用针对真正数组遍历的代码来遍历它们
九、作为数组的字符串
字符串的行为类似于只读数组。除了用charAt()方法来访问单个字符以外,还可以使用方括号:
var s = test; s.charAt(0) //=> "t" s[1] //=>"e"
标签:
原文地址:http://www.cnblogs.com/nankeyimeng/p/5343169.html