JS Array的属性和常用方法

时间:2021-02-08 19:06:38

数组的对象属性。

(1) constructor: 返回对创建此对象的数组函数的引用。

(2) length: 设置或返回数组中元素的数目。比较常用来对比数组的长度。

(3) prototype: 用来向对象添加属性和方法。一般用于重写Array。

数组的常用方法:

(1) concat,连接两个或更多的数组,并返回结果。

一般用来拼接多个数组,拼接之后的数组元素的排序是根据拼接的数组顺序及其内部元素的顺序排序的。

var arr = [1,2].concat(3,4,5]);
console.log(arr); //print [1,2,3,4,5]
arr=[1,2];
arr.concat([3,4],[5,6]);
console.log(arr); //print [1,2,3,4,5,6]

(2) join,把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

和toLocalString在某些地方有点像。

var arr = [1,2,3,4]
console.log(arr.join()); //print 1,2,3,4
console.log(arr.join(“@”)); //print 1@2@3@4

(3) pop,删除并返回数组的最后一个元素。

splice方法与之在删除效果相同,但是splice返回的是[ ]。

var arr = [1,2,3,4]
console.log(arr.pop()); //print 4
console.log(arr) //print [1,2,3]

arr = [1,2,3,4]
console.log(arr.splice(arr.splice(arr.length-1,1))); //print [ ]
console.log(arr) //print [1,2,3]

(4) push,向数组的末尾添加一个或更多元素,并返回新的长度。

splice方法与之在插入效果相同,但是splice返回的是[ ]。

var arr = [1,2,3,4,5,6]
console.log(arr.push(0)); //print 7
console.log(arr) //print [1,2,3,4,5,6,0]

arr = [1,2,3,4,5,6]
console.log(arr.splice(arr.splice(arr.length-1,0,0))); //print []
console.log(arr) //print [1,2,3,4,5,6,0]

(5) reverse,颠倒数组中元素的顺序。

sort也可以实现这个效果。

var arr = [1,2,3]
console.log(arr.reverse()); //print [3,2,1]

arr = [1,2,3]
console.log(arr.sort(function(left,right){
return right-left;
}); //print [3,2,1]
console.log(arr) //print [3,2,1]

(6) shift,删除并返回数组的第一个元素。

如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。

var arr = [1,2,3]
console.log(arr.shift()); //print 1

(7) slice,从某个已有的数组返回选定的元素。

arrayObject.slice(start,end)。返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

var arr = [1,2,3]
console.log(arr.slice()); //print [1,2,3]
console.log(arr.slice(1)); //print [2,3]
console.log(arr.slice(1,3)); //print [2,3]

(8) sort,对数组的元素进行排序。

arrayObject.sort(sortby)。sortby参数是可选的,规定排序顺序,若存在必须是函数。

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
* 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
* 若 a 等于 b,则返回 0。
* 若 a 大于 b,则返回一个大于 0 的值。

var arr = [1,2,3]
function sortA(a,b){
return a-b;
}
function sortB(a,b){
return b-a;
}
console.log(arr.sort()); //print [1,2,3]
console.log(arr.sort(sortA)); //print [1,2,3]
console.log(arr.sort(sortB)); //print [3,2,1]

(9) splice,对数组的元素进行排序。

arrayObject.splice(index,howmanydelete,additem1,…..,additemX)。splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。

Tip:splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

var arr = [1,2,3]
console.log(arr.splice(0,0,0)) //print [ ]
console.log(arr) //print [0,1,2,3]
arr=[1,2,3]
console.log(arr.splice(0,1)); //print [1]
console.log(arr) //print [2,3]
arr=[1,2,3]
console.log(arr.splice(1,1,4)) //print [2]
console.log(arr) //print [1,4,3]

(10) toString,把数组转换为字符串,并返回结果。

arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同。

var arr = [1,2,3]
console.log(arr.toString()) //print 1,2,3

(11) toLocaleString,把数组转换为本地数组,并返回结果。

arrayObject 的本地字符串表示。

var arr = [1,2,3]
console.log(arr.toLocaleString()) //print 1,2,3

(12) toLocaleString,向数组的开头添加一个或更多元素,并返回新的长度。

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

Tip:
+ 该方法会改变数组的长度。
+ unshift() 方法无法在 Internet Explorer 中正确地工作!
+ 要把一个或多个元素添加到数组的尾部,请使用 push() 方法。

var arr = [1,2,3]
console.log(arr.unshift(7)) //print 4
console.log(arr) //print [7,1,2,3]