JavaScript数组
复习一下数组,发现有些方法都忘记了
定义数组的方式
采用直接量创建
var MyArray = [];//创建空数组
var MyArray = [1,2,3];//创建数字型数组
var MyArray = [“A”,”B”,”C”];//创建字符型数组
var MyArray = [{id:1},{id:2},{id:3}];//创建对象型数组
采用构造函数创建
var MyArray = new Array();
MyArray[0] = 0;
MyArray[1] = “A”;var MyArray = new Array(5);
var MyArray = new Array(5,4,3,2,1);
属性
- constructor
描述:返回对创建此对象的数组函数的引用。
应用1:用于判断元素类型
exp:
1 |
|
输出:
This is an Array
应用2:用于获取构造函数的原形
exp:
1 | function employee(name,job,born) |
输出:
1 | function employee(name, job, born) |
- length
描述:设置或返回数组中元素的数目
应用:设置或返回数组中元素的数目
exp:
1 | var arr = new Array(3) |
输出:
Original length: 3
New length: 5
- prototype
描述:使您有能力向对象添加属性和方法
应用:向对象添加属性和方法
exp:
1 | //定义一个employee对象 |
值得注意的是:prototyp是面向对象编程的重要属性。在W3C的解释中,可以知道函数也是一个对向(具体函数与对象的关系后续再详细讨论),每个函数对象都具有一个子对象prototype。Prototype 表示了该函数的原型,prototype表示了一个类的属性的集合。当通过new来生成一个类的对象时,prototype对象的属性就会成为实例化对象的属性。
方法
- contact()
描述:连接两个或更多的数组,并返回结果
应用:连接n个数组
exp:
1 | var arr = new Array(3) |
输出:
George,John,Thomas,James,Adrew,Martin,William,Franklin
- join()
描述:把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔
应用:创建一个数组,然后把它的所有元素放入一个字符串
exp:
1 | var arr = new Array(3) |
输出:
George.John.Thomas
注意:join(separator)中separator为间隔符,若为空择默认为逗号。
- pop()
描述:pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值
应用:创建一个数组,然后删除数组的最后一个元素
exp:
1 | var arr = new Array(3) |
输出:
George,John,Thomas
Thomas
George,John
- push()
描述:push() 方法可把它的参数顺序添加到 arrayObject 的尾部。
它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。
arrayObject.push(newelement1,newelement2,....,newelementX)
newelement1(必选)- 要添加的第一个元素
newelement2(可选)- 要添加的第二个元素
newelementX(可选)- 要添加的第X个元素
应用:创建一个数组,并通过添加一个元素来改变其长度
exp:
1 | var arr = new Array(3) |
输出:
George,John,Thomas
4
George,John,Thomas,James
- reverse()
描述:用于颠倒数组中元素的顺序(该方法会改变原来的数组,而不会创建新的数组)
应用:创建一个数组,然后颠倒其元素的顺序
exp:
1 | var arr = new Array(3) |
输出:
George,John,Thomas
Thomas,John,George
- shift()
描述:用于把数组的第一个元素从其中删除,并返回第一个元素的值(如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject)
应用:创建一个数组,并删除数组的第一个元素。请注意,这也将改变数组的长度
exp:
1 | var arr = new Array(3) |
输出:
George,John,Thomas
George
John,Thomas
- slice()
描述:slice() 方法可从已有的数组中返回选定的元素
arrayObject.slice(start,end)
start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end: 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
应用:创建一个新数组,然后显示从其中选取的元素
exp:
1 | var arr = new Array(6) |
输出:
George,John,Thomas,James,Adrew,Martin
Thomas,James
George,John,Thomas,James,Adrew,Martin
- sort()
描述:用于对数组的元素进行排序
arrayObject.sort(sortby)
sortby 可选。规定排序顺序。必须是函数。
返回值为对数组的引用。请注意,数组在原数组上进行排序,不生成副本
参数说明:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
应用:创建一个数组,并按字母顺序进行排序
exp1:
1 | var arr = new Array(6) |
输出:
George,John,Thomas,James,Adrew,Martin
Adrew,George,James,John,Martin,Thomas
exp2:实现对多位数的排序(利用排序函数作为参数)
1 | function sortNumber(a,b) |
如果不写该函数作为参数,只会对多位数的第一位以ASCII码进行排序,无法实现多位数排序
- splice()
描述:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目
该方法会改变原始数组
arrayObject.splice(index,howmany,item1,.....,itemX)
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。
请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
应用:
exp1:创建一个新数组,并向其添加/删除一个元素
1 | var arr = new Array(6) |
输出:
George,John,Thomas,James,Adrew,Martin
George,John,William,Thomas,James,Adrew,Martin
exp2:删除位于 index 2 的元素,并添加一个新元素来替代被删除的元素
1 | var arr = new Array(6) |
输出:
George,John,Thomas,James,Adrew,Martin
George,John,William,James,Adrew,Martin
exp3:删除从 index 2 ("Thomas") 开始的三个元素,并添加一个新元素 ("William") 来替代被删除的元素
1 | var arr = new Array(6) |
输出:
George,John,Thomas,James,Adrew,Martin
George,John,William,Martin
- unshift
描述:可向数组的开头添加一个或更多元素,并返回新的长度
arrayObject.unshift(newelement1,newelement2,....,newelementX)
newelement1 必需。向数组添加的第一个元素。
newelement2 可选。向数组添加的第二个元素。
newelementX 可选。可添加若干个元素。
说明:unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。
请注意,unshift() 方法不创建新的创建,而是直接修改原有的数组。
请注意,unshift() 方法无法在 Internet Explorer 中正确地工作!
应用:创建一个数组,并把一个元素添加到数组的开头,并返回数组的新长度
exp:
1 | var arr = new Array() |
输出:
George,John,Thomas
4
William,George,John,Thomas
一些不常用的方法
toSource() 返回该对象的源代码。
toString() 把数组转换为字符串,并返回结果。
toLocaleString() 把数组转换为本地数组,并返回结果。
valueOf() 返回数组对象的原始值
说明
以上内容均来自W3Cschool,我是为了加深印象,巩固一下知识点。