数组对象的属性与方法
属性:
方法:
- concat()
- join()
- pop()
- push()
- reverse()
- shift()
- slice()
- sort()
- splice()
- toSurce()
- toString()
- toLocaleString()
- unshift()
- valueOf()
constructor
书面说法:
返回对创建此对象的数组函数的引用。
解释:
当创建一个数组时,JavaScript 会 new 一个Array构造函数,从而返回一个实例,实例中包含__proto__属性,在__proto__属性下面会包含constructor属性,此属性的值指向Array构造函数。因此,每一个对象的实例都可以通过constructor访问它的构造函数。
示例:
var a = [1,2,3];
a.constructor === Array
length
书面说法:
设置或返回数组中元素的数目。
解释:
这个貌似没什么好解释的,唯一可说的是设置。当设置长度大于本身长度时,会追加其空元素,反之则对元素进行裁剪。
示例:
let a = [1, 2, 3]; a.length = 5 // log [1, 2, 3,*empty* ,*empty*];
a.length = 2; // log [1,2]
prototype
**书面说法:**对象的原型,使您有能力向对象添加属性和方法。
解释:
因为Js中每个数据类型都是对象(null和undefined除外)而每个对象都继承自另一个对象,后者称之为原型对象,当构建一个对象实例时,原型上的所有方法都会被继承。
示例:
Array.prototype.name == "给数组对象添加个名称属性"
concat()
书面说法:
连接两个或多个数组,返回连接好的新数组。
参数:
必需-该参数可以是具体的值,也可以是数组对象。可以是任意多个。
示例:
var a = [1, 2, 3]; a.concat(4, 5) // log [1, 2, 3, 4, 5]
a.concat([4, 5]) // log [1, 2, 3, 4, 5]
join()与toString()与toLocaleString()
书面说法:
用指定的分隔符,把数组元素组成字符串。
toString()是把数组对象转换成字符串并返回结果。
toLocaleString()在数组方面跟toString()是一样的,唯独在时间对象上不一样。
参数:
separator:可选-分隔符,当省略时,默认使用逗号分隔。toString()与toLocaleString()没有参数
示例:
var a = [1, 2, 3]; a.join(",") // log "1, 2, 3"
pop()与shift()
书面说法:
删除并返回数组的最后一个元素。
参数:
无(该方法删除最后一个元素并返回,把数组长度减1,如果数组为空,则不改变数组,返回 undefined 值)shift()方法与之相反(删除并返回数组的第一个元素)
示例:
var a = [1, 2, 3]; a.pop() // log 3
var a = [1, 2, 3]; a.shift() // log 1
push()与unshift()
书面说法:
向数组的末尾添加一个或多个元素,并返回新的长度。unshift()是在数组的开头。unshift()无法在IE下工作。
参数:
多个参数,必须有一个,该方法会直接修改原数组,返回修改后的数组长度。
返回值:
两者都是返回字符串,当join()省略参数时,两者结果一样。
示例:
var a = [1, 2, 3]; a.push("4","5")// log 5
var a = [1, 2, 3]; a.unshift("4","5")// log 5
reverse()
书面说法:
用于颠倒数组中元素的顺序。
返回值:
该方法会改变原来的数组,不创建新的数组,返回颠倒后的原数组的引用。
示例:
var a = [1, 2, 3]; a.reverse() // log [3, 2, 1]
slice()
书面说法:
从数组中返回指定的元素。
参数:
start:必需-要选取的开始位置的下标(当为负数时,则从数组末尾开始算,-1则为最后一个,-2为倒数第二个,依此类推)
end:可选-要选取的结束位置的下标(当为负数时,同上。当没有指定时,默认下标为最后一个元素。)
返回值: 返回从start-end(不包含)区间的新数组。该方法不会修改原数组。
示例:
var a = [1, 2, 3]; a.slice(0,2) // log [1, 2] a.slice(0,-1) // log [1, 2] a.slice(-3,-1) // log [1, 2]
以上结果都一样
sort()
**书面说法:**对数组的元素进行排序。
参数:
sortby:可选-Function类型,规定排序规则。
如果参数为空,则默认按字符编码进行排序,会自动把数组元素转换成字符串,再进行比较。
比较函数应带有a,b两个参数,在函数中比较后的返回值如下:
- 当a小于b,希望a出现在b前面的前提下,返回<0的值
- 当a等于b,返回0
- 当a大于b,返回>0的值
返回值:
返回原数组的引用,不生成新的数组。
示例:
var a = [3, 2, 1]; a.sort() // log [1, 2, 3] a.sort((a, b) => { return -(a-b); }) // log [3, 2, 1]
splice()
书面说法:
向数组中添加/删除元素。
参数:
index:必需-整数,规定添加/删除的位置,如为负数则从结尾处开始计算。
howmany:必需-要删除的元素数量,如为0,则不删除元素。
item-n:可选-向数组中添加的新元素。当 howmany 为0时,新元素就增加至 index 处前面,否则将替换从 index 到 howmany 个元素的位置。
返回值:
返回被删除的元素组成的新数组,howmany 为0时,返回空数组。该方法会修改原数组。
示例:
var a = [1, 2, 3]; a.splice(1,0,1) // log [] a.splice(1,2,2) // log [2, 3]
valueOf()
书面说法:
返回数组对象的原始值。
**参数:**无
返回值:
返回值与toString()一样,唯一不同的是toString()返回的数据类型为字符串,而valueOf()返回的则是当前对象的数据类型。
示例:
var a = [1, 2, 3]; Array.isArray(a.valueOf()) // log true Array.isArray(a.toString()) // log false