JavaScript数组

来源:互联网 发布:果蔬清洗机有用吗 知乎 编辑:程序博客网 时间:2024/05/19 15:24

7.0 数组

数组是一种特殊对象。

7.1创建数组的三种方式

数组直接量:var a=[1,2,3];

new运算符创建数组:var a=new Array(7);参数为数组长度(稀疏数组)

创建并初始化数组:var a=new Array(1,2,3,4,"abc");

7.2 数组元素的读和写

var a=[1,2,3]; a[0] =>1; a[0]=3;

7.3 稀疏数组

var a1=[,,]; =>[undefined,undeifned,undefined]

var a2=new Array(3); =>该数组中根本没有元素

0 in a1 =>true

0 in a2 =>false 

7.4 数组长度

length属性表示的数组长度是数组最大索引值+1

Object.defineProperty(array object,"length",{ writable:false }) 可设置length属性为只读

7.5 数组元素的添加和删除

var a=[1,2,3];

delete a[1]; =>a在索引1的位置不再有元素

1 in a =>false:数组索引1并未在数组中定义

a.length =>3,delete操作并不影响数组长度

7.6 数组遍历

for循环,forEach()循环

7.7 多维数组

7.8 数组方法

join(连接符) : 将数组元素转化为字符串并通过指定连接符连接起来,返回新字符串

split(分隔符):根据分隔符分割字符串并转化为数组元素,返回新数组

reverse(): 将数组元素顺序颠倒顺序

sort(Function): 默认按照ASCII码顺序排序,也可通过参数函数修改为指定顺序,返回修改后的原数组

concat(元素): 创建并返回一个新数组,连接的是数组元素,而不是数组本身

slice(开始位置,结束位置) : 返回指定数组的一个片段或子数组,开始位置和结束位置数值可为负数,如-1表示最后一个元素

splice(开始删除元素位置,结束删除元素位置,插入值) : 在数组中插入或删除元素的通用方法,返回删除元素组成的新数组,原数组元素也被删除

push()和pop() : push在数组尾部添加新元素,pop删除最后一个元素,类似栈,先进后出

unshift()和shift() : unshift在数组头部添加新元素,shift删除头部元素,类似 队列,先进先出

toString和toLocaleString(): 将数组每个元素转化为字符串并且输出用逗号分隔的字符串列表

7.9 ECS5 数组方法

大多数ECS5方法接受三个参数:第一个是 数组元素、第二个是 元素的索引、 第三个是 数组本身

forEach() :  从头至尾遍历数组,为每个元素调用指定的函数

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

filter(): 返回的数组元素是调用的数组的一个子集,传递的函数是用来逻辑判定的:该函数返回true或false

every()和some(): 两个方法是数组的逻辑判定:它们对数组元素应用指定的函数进行判定,返回true或false

indexOf(搜索元素,搜索起始位置)和lastIndexOf(搜索元素,搜索起始位置): 搜索指定元素,返回索引值,若为-1表示未找到

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

例子:    var  a[1,2,3,4];

a.every(function(x){ return x<10; }) =>true: 所有的值小于10

a.some(function(x){ return x<3 }) =>true:一部分值小于3 

a.filter(function(x){ return x<3 }) => [1,2]

a.map(function(x){ return x*x }) =>[1,4,9,16]

var b=sum;a.forEach(function(x){ sum+=x; }) =>10

a.indexOf(2) =>返回索引值1

a.reduce(function(x,y){ return x+y }) => 数组求和,值为10


7.10 数组类型

Array.isArray() =>true,isArray可判定是否是数组

7.11 类数组对象

具有数组部分特性的对象,通过call()方法可以使其他对象可以使用数组的部分方法

var a={ "0":"a","1":"b","2":"c",length:3 };    =>类数组对象

Array.prototype.join.call(a,"+") =>"a+b+c"

7.12 作为数组的字符串

var s="Javascript";

Array.prototype.join.call(s," ");  =>"J a v a s c r i p t"

Array.prototype.filter.call(s,function(){    =>过滤字符串中的部分字符

return x.match(/[^aeiou]/);

}).join("");    =>"JvScrpt"

备注:字符串是不可变值,故当把它们作为数组看待时,它们是只读的。如push(),sort()等数组方法会修改数组,它们在字符串上是无效且会出错无提示
















0 0