目录
一、数组Array的属性
1、constructor
2、prototype
3、length
二、改变原来数组的方法
1、pop
2、push
3、reverse
4、shift
5、splice
6、unshift
7、sort
场景一:没有参数
场景二:有参数
1、concat
2、join
3、slice
4、toString
1、constructor
返回对创建此对象的数组函数的引用。
2、prototype
使您有能力向对象添加属性和方法。
3、length
可设置或返回数组中元素的数目。
设置 length 属性可改变数组的大小。如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失。如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined。
1、pop
① 获取数组最后一个元素(改变原数组) ② 删除原数组最后一个元素
arrayObject.pop()
js内置的pop()方法可用于删除并并返回数组的最后一个元素,注意这里获取了数组的最后一个元素的同时也将原数组的最后一个元素删除了。
如果数组为空,则该方法不改变数组,并返回undefined。
let list = [1,2,3,4]
let last = list.pop()
console.log(list) // [1, 2, 3]
console.log(last) // 4
2、push
① 数组尾部添加元素 ②返回数组的新长度
arrayObject.push(newelement1,newelement2,....,newelementX)
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
let arr6 = [1,2,3]
let arr7 = arr6.push(4,5)
console.log(arr6,arr7) // [1, 2, 3, 4, 5] 5
arr6.push(6)
console.log(arr6) // [1, 2, 3, 4, 5, 6]
arr6 = arr6.push(7)
console.log(arr6) // 7
3、reverse
① 颠倒数组的顺序(改变原数组)
arrayObject.reverse()
reverse() 方法用于颠倒数组中元素的顺序。该方法会改变原来的数组,而不会创建新的数组。
let arr8 = [1,2,3,4,5,6]
let arr9 = arr8.reverse()
console.log(arr8, arr9) // [6, 5, 4, 3, 2, 1] [6, 5, 4, 3, 2, 1]
4、shift
① 获取数组的第一个元素(改变原数组)② 删除原数组第一个元素
arrayObject.shift()
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。
let arr10 = [1,2,3,4]
let arr11 = arr10.shift()
console.log(arr10, arr11) // [2, 3, 4] 1
5、splice
① 向数组中添加或删除元素(改变原数组)② 返回被删除的元素
arrayObject.splice(index,howmany,item1,.....,itemX)
index:整数且必需。规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX:可选。向数组添加的新项目。
splice() 方法可删除从 index 处开始的howmany(零或多)个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
所有主流浏览器都支持 splice() 方法。
请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
let arr19 = [1,2,3,4,5,6]
let arr20 = arr19.splice(1,4)
console.log(arr20,arr19) // [2, 3, 4, 5] [1, 6]
let arr21 = [1,2,3,4,5,6]
let arr22 = arr21.splice(1,4,222,333,666)
console.log(arr22,arr21) // [2, 3, 4, 5] [1,222,333,666,6]
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "
")
arr.splice(2,0,"William")
document.write(arr + "
")
George,John,Thomas,James,Adrew,Martin
George,John,William,Thomas,James,Adrew,Martin
6、unshift
① 向数组的开头添加一个或更多元素(改变原数组) ② 返回新的长度
arrayObject.unshift(newelement1,newelement2,....,newelementX)
unshift() 方法将把它的参数插入arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。
请注意,unshift() 方法不创建新的数组,而是直接修改原有的数组。
注释:unshift() 方法无法在 Internet Explorer 中正确地工作
let arr = [1,2,3,4]
let arrNew = arr.unshift(11, 22, 33, 44)
console.log(arr, arrNew) // [11, 22, 33, 44, 1, 2, 3, 4] 8
7、sort
① 对数组元素进行排序(改变原数组)
arrayObject.sort(sortby)
参数:可选,规定排序顺序。必须是函数。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序。说得更精确点,是按照字符编码的顺序进行排序。
要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
let arr = new Array(6)
arr[0] = 'George'
arr[1] = 'John'
arr[2] = 'Thomas'
arr[3] = 'James'
arr[4] = 'Adrew'
arr[5] = 'Martin'
let arr16 = arr.sort()
console.log(arr16, arr)
// ["Adrew", "George", "James", "John", "Martin", "Thomas"]
// ["Adrew", "George", "James", "John", "Martin", "Thomas"]
let arr17 = new Array(6)
arr17[0] = '10'
arr17[1] = '5'
arr17[2] = '40'
arr17[3] = '25'
arr17[4] = '1000'
arr17[5] = '1'
console.log(arr17.sort())
// ["1", "10", "1000", "25", "40", "5"]
如果想按照其他标准进行排序,就需要提供比较函数。
该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
function sortNumber(a,b){
return a-b
}
let arr18 = new Array(6)
arr18[0] = '10'
arr18[1] = '5'
arr18[2] = '40'
arr18[3] = '25'
arr18[4] = '1000'
arr18[5] = '1'
console.log(arr18.sort(sortNumber)) // ["1", "5", "10", "25", "40", "1000"]
1、concat
① 连接多个数组或元素(不改变原数组)
arrayObject.concat(arrayX,arrayX,......,arrayX)
concat() 方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
let arr1 = [1,2,3]
let arr2 = [4,5]
let arr3 = arr1.concat(arr2)
console.log(arr1, arr2, arr3)
// [1,2,3] [4,5] [1,2,3,4,5]
arr3 = arr3.concat(6,7)
console.log(arr3) // [1, 2, 3, 4, 5, 6, 7]
2、join
① 将数组用分隔符连接成字符串(不改变原数组)
arrayObject.join(separator)
join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。该参数可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
let arr4 = [2019, 3, 14]
let arr5 = arr4.join()
console.log(arr4, arr5) // [2019, 3, 14] "2019,3,14"
arr4 = arr4.join('.')
console.log(arr4) // 2019.3.14
3、slice
① 截取原数组中某段元素(不改变原数组)
arrayObject.slice(start,end)
slice() 方法可从已有的数组中返回选定的元素。返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()
let arr12 = [1,2,3,4]
let arr13 = arr12.slice(1)
console.log(arr12, arr13) // [1, 2, 3, 4] [2, 3, 4]
let arr14 = [1,2,3,4]
let arr15 = arr14.slice(-1)
console.log(arr14, arr15) // [1, 2, 3, 4] [4]
4、toString
① 把数组转换为字符串 ② 并返回结果(不改变原数组)
arrayObject.toString()
arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同。当数组用于字符串环境时,JavaScript 会调用这一方法将数组自动转换成字符串。但是在某些情况下,需要显式地调用该方法。
注释:数组中的元素之间用逗号分隔
let arr23 = [1,2,3,4]
let arr24 = arr23.toString()
console.log(arr23, arr24) // [1, 2, 3, 4] "1,2,3,4"
5、toLocaleString
① 把数组转换为本地字符串(不改变原数组)
arrayObject.toLocaleString()
arrayObject 的本地字符串表示。首先调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。
// 把数组转换为本地字符串 返回格式化对象后的字符串
// 该字符串格式因语言不同返回值也会不同,可以通过传参决定返回的语言及具体的表现
let arr25 = [1,2,3,4]
let arr26 = arr25.toLocaleString()
console.log(arr25,arr26) // [1, 2, 3, 4] "1,2,3,4"
let a = 12222
console.log(a.toLocaleString()) // 12,222 (整数部分每三位加一个逗号)