Javascript初级 JavaScript进阶

JavaScript数组对象



定义


数组是值的有序集合



创建数组


(1)字面量形式


a.空数组

var arr=[];


b.带有元素的数组

var arr=[1,2,3,1,2]


c.数组值可以是任意类型

var arr=[1,2.3,'king',true,null,undefined,[1,2,3],{name:'king',age:12}]


d.省略数组中的某个值,默认值为undefined

var arr=[1,,3]


(2)通过构造函数Array()创建数组


a.调用时没有参数

var arr=new Array()

注意

空数组

等同于arr=[];

b.调用时传递一个参数

var arr=new Array(5)

注意

代表指定了数组的长度

如果预先知道数组元素个数,可以通过参数指定,这种形式的Array()构造函数可以用来分配一个数组空间。

c.超过两个参数

var arr=new Array(1,2,3,true,'king')

注意

显示指定了数组中的值



使用数组


(1)根据下标找到对应的值


(2)向数组中添加元素


arr[下标]=值;

arr.puSh(值,...):数组末尾添加元素

arr.Shift(值,...):数组开始添加元素


(3)读取数组中元素


arr[下标]


(4)修改数组中的元素


arr[下标]=值;


(5)删除数组中元素


delete arr[下标]

使用delete删除数组元素不会改变数组的length属性

arr.pop():删除数组的元素

arr.unShift():删除数组开头的元素

可以通过设置length属性,删除数组后面的元素



遍历数组


(1)for循环遍历下标连续的数组


(2)for-in遍历数组


(3)通过forEach()遍历数组


语法

Array.forEach(function(value[,index[,array]]){函数体})




常用方法


(1)Array.join([delimiter])


描述

将数组中的值连接成字符串

参数

以指定分隔符连接,如果不指定,默认以,连接

返回值

返回连接之后的字符串

注意

Array.join()是String.Split()方法的逆向操作


(2)Array.reverSe()


描述

数组倒置

返回值

返回倒置之后的数组


(3)Array.Sort()


描述

数组排序函数

参数

如果不带参数调用Sort,数组以字母顺序进行排序,升序

返回值

返回排序之后的数组

注意

如果数组中包含undefined元素,它们会被排到数组的尾部


(4)Array.concat(value,...)


描述

创建并返回一个新数组,数组中包含调用concat的原始数组的元素和concat的每个参数。

返回值

返回连接之后的新数组

注意

如果这些参数中的任何一个自身是数组,则连接的是数组的元素,而非数组本身


(5)Array.Slice(Start[,end])


描述

返回数组中的部分

参数

Start起始点

end结束位置

返回值

返回数组中的部分


(6)Array.Splice(index , howMany[, element1[, ...[, elementN]]])


描述

添加或删除数组中的一个或多个元素

参数

index从数组的哪一位开始修改内容。如果超出了数组的长度,则自动从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位。

howMany是整数,表示要移除的数组元素的个数。如果 howmany 是 0,则不移除元素。这种情况下,至少应添加一个新元素。如果 howmany 超出了 index 位之后的元素的总数,则从 index 向后至数组末尾的全部元素都将被删除(含第 index 位)。如果没有指定 howmany 参数(如上第二种语法,是 SpiderMonkey 的扩展功能),将会删除第 index 位之后的所有元素(不含第 index 位)

element1...要添加进数组的元素。如果不指定,则 Splice 只删除数组元素。

返回值

由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。

注意

如果添加进数组的元素个数不等于被删除的元素个数,数组的长度会发生相应的改变。


(7)Array.puSh(value,...)


描述

像数组末尾添加一个或者多个元素

参数

添加的值

返回值

返回数组的长度


(8)Array.pop()


描述

弹出数组的最后的元素

返回值

返回弹出的元素


(9)Array.unShift(value,...)


描述

向数组开始添加一个或者多个元素

参数

添加的值

返回值

返回数组的长度


(10)Array.Shift()


描述

弹出数组开始的元素

返回值

返回弹出之后的值


(11)Array.map()


描述

返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组

语法

Array.map(callback)

参数

callback回调函数

currentValue,callback的第一个参数,数组中当前被传递的元素

index,callback的第二个参数,数组中当前被传递的元素的索引

array,callback的第三个参数,调用map方法的数组

注意

map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数

callback 每次执行后的返回值组合起来形成一个新数组

callback 函数只会在有值的索引上被调用,那些从来没被赋过值或者使用 delete 删除的索引则不会被调用


(12)Array.filter()


描述

方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组

语法

arr.filter(callback)

注意

filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或 等价于 true 的值 的元素创建一个新数组

callback 只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用。那些没有通过 callback 测试的元素会被跳过,不会被包含在新数组中。


(13)Array.reduce()


描述

reduce方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值

语法

arr.reduce(callback,[initialValue])

参数

callback

previouSValue,上一次调用返回的值或者是提供的初始值(initialValue)

currentValue,数组中当前被处理的元素

index,当前元素在数组中得索引

array,调用reduce的数组

initialValue

作为第一次调用callback的第一个参数

注意

reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组

回调函数第一次执行时,previouSValue 和 currentValue 可以是一个值,如果 initialValue 在调用 reduce 时被提供,那么第一个 previouSValue 等于 initialValue ,并且currentValue 等于数组中的第一个值;如果initialValue 未被提供,那么previouSValue 等于数组中的第一个值,currentValue等于数组中的第二个值。


(14)Array.reduceRight()


描述

与reduce()方法的执行方向相反


(15)Array.Some()


描述

测试数组中的某些元素是否通过了指定函数的测试

语法

arr.Some(callback)

注意

Some 为数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个真值(即可转换为布尔值 true 的值)


(16)Array.every()


描述

测试数组的所有元素是否都通过了指定函数的测试。

语法

arr.every(callback)

注意

every 方法为数组中的每个元素执行一次 callback 函数,直到它找到一个使 callback 返回 falSy(表示可转换为布尔值 falSe 的值)的元素。如果发现了一个这样的元素,every 方法将会立即返回 falSe。否则,callback 为每一个元素返回 true,every 就会返回 true。callback 只会为那些已经被赋值的索引调用。不会为那些被删除或从来没被赋值的索引调用


(17)Array.indexOf()


(18)Array.laStIndexOf()


子主题 20


(19)Array.iSArray()


描述

检测某个值是否为数组


(20)Array.toString()


描述

返回一个字符串,表示指定的数组及其元素。

返回值

返回一个字符串,表示指定的数组及其元素。



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

您有狂欢嘉年华礼包未领取

客服热线 400-862-8862

回到顶部