您的位置:首页 > Web前端 > JavaScript

JavaScript学习之Array(数组对象)方法介绍

2016-08-05 15:15 387 查看

概述

Array对数组的内部支持
Array.concat( )连接数组
Array.join( )将数组元素连接起来以构建一个字符串
Array.length数组的大小
Array.pop( )删除并返回数组的最后一个元素
Array.push( )给数组添加元素
Array.reverse( )颠倒数组中元素的顺序
Array.shift( )将元素移出数组
Array.slice( )返回数组的一部分
Array.sort( )对数组元素进行排序
Array.splice( )插入、删除或替换数组的元素
Array.toLocaleString( )把数组转换成局部字符串
Array.toString( )将数组转换成一个字符串
Array.unshift( )在数组头部插入一个元素

Array 介绍

可用性

JavaScript 1.1; JScript 2.0; ECMAScript v1

从…继承/覆盖

继承于 Object

构造函数

new Array( )

new Array(size)

new Array(element0, element1, ..., elementn)


参数

size
期望的数组元素个数。返回的数组,1ength域将被设为size的值。
element0, ... elementn
两个或多个值的参数列表。当使用这些参数来调用构造函数Array()时,新创建的数组的元素就会被初始化为这些值,它的length域也会被设置为参数的个数。

返回值

新创建并被初始化了的数组。如果调用构造函数Array()时没有使用参数,那么返回的数组为空,length域为0。当调用构造函数时只传递给它一个数字参数,该构造函数将返回具有指定个数、元素为undefined的数组。当用其他参数调用Array{)时, 该构造函数将用参数指定的值初始化数组。当把构造函数作为函数调用,不使用new运算符时,它的行为与使用new运算符调用它时的行为完全一样。

抛出

RangeError
当只传递给Array()构造函数一个整数参数size时,如果size是负数,或者大子232 -1,将抛出RangeError异常。

直接量语法

ECMAScript v3规定了数组直接量的语法,JavaScript 1.2和JScript 3.0实现了它。可以把—个用逗号分隔的表达式列表放在方括号中,创建并初始化—个数组。这些表达式的值将成为数组元素。例如:
var a = [1, true, 'abc'];

var b = [a[0], a[0]*2, f(x)];


属性

length

一个可读可写的整数,声明了数组中的元素个数。如果数组中的元素不连续,它就是比数组中的最后—个元素的下标大1的整数。改变这个属性的值将截断或扩展数组。

Array.concat( ) 连接数组

可用性

JavaScript 1.2; JScript 3.0; ECMAScript v3

语法

array.concat(value, ...)


参数

value, ...

要增加到array中的值,可以是任意多个。

返回值

一个新数组,是

描述

方法concat()将创建并返回一个新数组,这个数组是将所有参数都添加到array中生成的。它并不修改array。如果要进行concat()操作的参数是一个数组,那么添加的是数组中的元素,而不是数组。

示例

var a = [1,2,3];

a.concat(4, 5)          //返回 [1,2,3,4,5]

a.concat([4,5]);        //返回 [1,2,3,4,5]

a.concat([4,5],[6,7])   //返回 [1,2,3,4,5,6,7]

a.concat(4, [5,[6,7]])  //返回 [1,2,3,4,5,[6,7]]


Array.join( ) 将数组元素连接起来以构建一个字符串

可用性

JavaScript 1.1; JScript 2.0; ECMAScript v1

语法

array.join( )

array.join(separator)


参数

separator

在返回的字符串中用于分隔数组元素的字符或字符串,它是可选的。如果省略了这个参数,用逗号作为分隔符。

返回值

—个字符串,通过把array的每个元素转换成字符串,然后把这些字符串连接起来,在两个元素之间插入separator字符串而生成。

描述

方法join()将把每个数组元素转换成一个字符串,然后把这些字符串连接起来,在两个元素之间插入指定的separator字符串。返回生成的字符串。
可以用String对象的split()方法执行相反的操作,即把一个字符串分割成数组元素。

示例

a = new Array(1, 2, 3, "testing");

s = a.join("+");  // s 是字符串"1+2+3+testing"


Array.length 数组大小

可用性

JavaScript 1.1, JScript 2.0; ECMAScript v1

语法

array.length


描述

数组的length属性总是比数组中定义的最后一个元素的下标大一。对于那些具有连续元素,而且以元素0开始的常规数组来说,属性length声明了数组中的元素个数。

数组的length属性在用构造函数Array()创建数组时初始化。给数组添加新元素时,如果必要,将更新length的值:
a = new Array(  );                       // a.length 被初始化为 0

b = new Array(10);                       // b.length 被初始化为 10

c = new Array("one", "two", "three");    // c.length 被初始化为 3

c[3] = "four";                           // c.length 被更新为 4

c[10] = "blastoff";                      // c.length 变为 11

设置属性length的值可以改变数组的大小。如果设置的值比它的当前值小,数组将被截断,其尾部的元素将丢失。如果设置的值比它的当前值大,数组将增大,新元素被添加到数组尾部,它们的值为undefined。

Array.pop( ) 删除并返回数组的最后一个元素

可用性

JavaScript 1.2; JScript 5.5; ECMAScript v3

语法

array.pop( )


返回值

array的最后一个元素。

描述

方法pop()将删除array的最后一个元素,把数组长度减1,并且返回它删除的元素的值。如果数组已经为空,则pop()不改变数组,返回undefined。

示例

方法pop()和方法push()可以提供先进后出(FILO)栈的功能。例如:
var stack = [];       // 栈:[]

stack.push(1, 2);     // 栈: [1,2]      返回 2

stack.pop(  );        // 栈: [1]        返回 2

stack.push([4,5]);    // 栈: [1,[4,5]]  返回 2

stack.pop(  )         // 栈: [1]        返回 [4,5]

stack.pop(  );        // 栈: []         返回 1


Array.push( ) 给数组添加元素

可用性

JavaScript 1.2; JScript 5.5; ECMAScript v3

语法

array.push(value, ...)


参数

value, ...

要添加到array尾部的值,可以是一个或多个。

返回值

把指定的值添加到数组后的新长度。

描述

方法push()将把它的参数顺次添加到array的尾部。它直接修改array,而不是创建——个新的数组。方法push()和方法pop()用数组提供先进后出栈的功能。参阅 “Array.pop()”中的示例。

Bug

在JavaScript的Netscape实现中,如果把语言版本明确地设置为1.2,该函数将返回最后添加的值,而不是返回新数组的长度。

Array.reverse( ) 颠倒数组中元素位置

可用性

JavaScript 1.1; JScript 2.0; ECMAScript v1

语法

array.reverse( )


描述

Array对象的方法reverse()将颠倒数组中元素的顺序。它在原数组上实现这一操作,即重排指定的array的元素,但并不创建新数组。如果对array有多个引用,那么通过所有引用都可以看到数组元素的新顺序。

示例

a = new Array(1, 2, 3);    // a[0] == 1, a[2] == 3;

a.reverse(  );             // Now a[0] == 3, a[2] == 1;


Array.shift( ) 将元素移除数组

可用性

JavaScript 1.2; JScript 5.5; ECMAScript v3

语法

array.shift( )


返回值

数组原来的第一个元素。

描述

方法shift()将把array的第—个元素移出数组,返回那个元素的值,并且将余下的所有元素前移一位,以填补数组头部的空缺。如果数组是空的,shift()将不进行任何操作,返回undefined。注意,该方法不创建新数组,而是直接修改原有的数组。
方法shift()和方法Array.pop()相似,只不过它在数组头部操作,而不是在尾部操作。该方法常常和unshift()一起使用。

示例

var a = [1, [2,3], 4]

a.shift(  );  // 返回 1; a = [[2,3], 4]

a.shift(  );  // 返回 [2,3]; a = [4]


Array.slice( ) 返回数组一部分

可用性

JavaScript 1.2; JScript 3.0; ECMAScript v3

语法

array.slice(start, end)


参数

start
数组片段开始处的数组下标。如果是负数,它声明从数组尾部开始算起的位置。 也就是说,-1指最后一个元素,-2指倒数第二个元素,以此类推。
end
数组片段结束处的后一个元素的数组下标。如果没有指定这个参数 包含从start开始到数组结束的所有元素。如果这个参数是负数, 从数组尾部开始算起的元素。

返回值

一个新数组,包含从start到end(不包括该元素)指定的array元素。

描述

方法slice()将返回数组的一部分,或者说是一个子数组。返回的数组包含从start 开始到end之间的所有元素,但是不包括end所指的元素。如果没有指定end,返回的数组包含从start开始到原数组结尾的所有元素。
注意:该方法并不修改数组。如果想删除数组中的一段元素,应该使用方法Array.splice。

示例

var a = [1,2,3,4,5];

a.slice(0,3);    // 返回 [1,2,3]

a.slice(3);      // 返回 [4,5]

a.slice(1,-1);   // 返回 [2,3,4]

a.slice(-3,-2);  // 返回 [3]; IE 4存在的Bug: 返回[1,2,3]


Bug

在Internet Explorer 4中,参数start不能为负数。 

Array.sort( ) 对数组元素进行排序

可用性

JavaScript 1.1; JScript 2.0; ECMAScript v1

语法

array.sort( ) array.sort(orderfunc)


参数

orderfunc

用来指定按什么顺序进行排序的函数,可选。

返回值

对数组的引用。注意,数组在原数组上进行排序,不制作副本。

描述

方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如果有必要的话),以便进行比较。
如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:

如果根据你的评判标准,a小于b,在排序后的数组中a应该出现在b之前,就返回一个小于0的值。

如果a等于b,就返回0。

如果a大于b,就返回一个大于0的值。

注意,数组中undefined的元素都排列在数组末尾。即使你提供了自定义的排序函数也是这样,因为undefined值不会被传递给你提供的orderfunc。

示例

下面的代码展示了如何编写按数字顺序,而不是按字母顺序对数组进行排序的比较函数:
// 按照数字顺序排序的排序函数

function numberorder(a, b) { return a - b; }

a = new Array(33, 4, 1111, 222);

a.sort(  );             // 按照字母顺序的排序结果为: 1111, 222, 33, 4

a.sort(numberorder);    // 按照数字顺序的排序结果为: 4, 33, 222, 1111


Array.splice( ) 插入、删除或替换数组的元素

可用性

JavaScript 1.2; JScript 5.5; ECMAScript v3

语法

array.splice(start, deleteCount, value, ...)


参数

start
开始插入和(或)删除的数组元素的下标。
deleteCount
从start开始,包括start所指的元素在内要删除的元素个数。这个参数是可选的,如果没有指定它,splice()将删除从start开始到原数组结尾的所有元素。
value, ...
要插人数组的零个或多个值,从start所指的下标处开始插入。

返回值

如果从array中删除了元素,返回的是含有被删除的元素的数组。但是要注意,由于存在—个bug,因此在JavaScriptl.2的Netscape实现中,返回的并不总是数组。

描述

方法splice()将删除从start开始(包括start所指的元素在内)的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。位于插入或删除的元素之后的数组元素都会被移动,以保持它们与数组其他元素的连续性。注意,虽然spllce()方法与slice()方法名字相似,但作用不同,方法splice()直接修改数组。

示例

读了下面的例子,就很容易理解splice()的操作了:
var a = [1,2,3,4,5,6,7,8]

a.splice(4);        // 返回 [5,6,7,8]; a is [1,2,3,4]

a.splice(1,2);      // 返回 [2,3]; a is [1,4]

a.splice(1,1);      // Netscape/JavaScript 1.2 返回 4 ,应该返回 [4]

a.splice(1,0,2,3);  // Netscape/JavaScript 1.2 返回 undefined ,应该返回 []


Bug

方法splice()假定在各种情况下均返回一个包含已删除元素的数组。但是,在 Netscape的JavaScript 1.2解释器中,如果删除的是单个元素,那么该方法返回的是元素,而不是包含那个元素的数组。如果没有删除任何元素,它不是返回一个空数组,而是什么都不返回。只要把语言版本明确地设置为1.2,JavaScript的Netscape实现都有这种bug行为。  

Array.toLocaleString( ) 把数组转换成局部字符串

可用性

JavaScript 1.5; JScript 5.5; ECMAScript v1

从…继承/覆盖

覆盖 Object.toLocaleString( )

语法

array.toLocaleString( )


返回值

数组array的局部字符串表示。

抛出

TypeError
调用该方法时,如果对象不是Array,则抛出异常。

描述

数组的方法toString()将返回数组的局部字符串表示。它首先调用每个数组元素的toLocaleString()方法,然后用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。

Array.toString( ) 把数组转换成一个字符串

可用性

JavaScript 1.1; JScript 2.0; ECMAScript v1

从…继承/覆盖

Overrides Object.toString( )

语法

array.toString( )


返回值

array的字符串表示。

抛出

TypeError
调用该方法时,若对象不是Array,则抛出该异常。

描述

数组的toString()方法将把数组转换成一个字符串,并且返回这个字符串。当数组用于字符串环境中时,JavaScript会调用这一方法将数组自动转换成一个字符串。但在某些情况下,需要明确地调用这个方法。
toString()在把数组转换成字符串时,首先要将数组的每个元素都转换成字符串 (通过调用这些元素的toString()方法)。当每个元素都被转换成字符串时,它就以列表的形式输出这些字符串,字符串之间用逗号分隔。返回值与没有参数的join() 方法返回的字符串相同。

Bug

在Netscape实现中,如果把语言版本明确地设置为1.2,toString()将会返回用逗号和空格分隔的数组元素列表,这个列表采用数组直接量表示法,用方括号括起元素。例如,在把<script>标记的language性质明确地设置为“JavaScript l.2”时,就会发生这种情况。 

Array.unshift( ) 在数组头部插入一个元素

可用性

JavaScript 1.2; JScript 5.5; ECMAScript v3

语法

array.unshift(value, ...)


参数

value, ...

要插入数组头部的一个或多个值。

返回值

数组的新长度

描述

方法unshift()将把它的参数插入array的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组新的元素0,如果还有第二个参数,它将成为新的元素1,以此类推。注意,unshift()不创建新数组,而是直接修改原有的数组。

示例

方法unshift()通常和方法shift()一起使用。例如:
var a = [];             // a:[]

a.unshift(1);           // a:[1]          返回 1

a.unshift(22);          // a:[22,1]       返回 2

a.shift(  );            // a:[1]          返回 22

a.unshift(33,[4,5]);    // a:[33,[4,5],1] 返回 3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript Array介绍