1.概述
本文主要讲述关于一些JavaScript数组方法的使用。
2.数组的一些操作
2.1.创建数组
(1)常规方式
let array = new Array()
array[0] = 1
array[1] = 2
array[2] = 3
//[ 1, 2, 3 ]
console.log(array);
(2)简洁方式
let array = new Array(1, 2, 3)
//[ 1, 2, 3 ]
console.log(array);
(3)字面
let array = [1, 2, 3]
//[ 1, 2, 3 ]
console.log(array);
2.2.访问数组
(1)获取数组的值
let array = [1, 2, 3]
let num = array[0]
// 1
console.log(num);
(2)修改数组的值
let array = [1, 2, 3]
array[0] = 5
//5
console.log(array[0]);
(3)获取数组的长度
let array = [1, 2, 3]
let len = array.length
//3
console.log(len);
3.JavaScript数组的方法
3.1.concat()方法
连接两个或更多的数组,并返回结果。
语法:
array1.concat(array2,array3,...,arrayX)
参数:
| 参数 | 描述 |
|---|---|
| array2, array3, ..., arrayX | 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。 |
示例1:
//合并两个数组的值
let array1 = [1, 2, 3]
let array2 = [4, 5, 6]
let array3 = array1.concat(array2)
//[ 1, 2, 3, 4, 5, 6 ]
console.log(array3);
示例2:
//合并多个数组的值
let array1 = [1, 2, 3]
let array2 = [4, 5, 6]
let array3 = [7, 8, 9]
let array4 = array1.concat(array2, array3)
// [1, 2, 3, 4, 5,6, 7, 8, 9]
console.log(array4);
3.2.copyWithin() 方法
copyWithin() 方法用于从数组的指定位置拷贝元素到数组的另一个指定位置中。ES6
语法:
array.copyWithin(target, start, end)
参数:
| 参数 | 描述 |
|---|---|
| target | 必需。复制到指定目标索引位置。 |
| start | 可选。元素复制的起始位置。 |
| end | 可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。 |
示例1:
// 复制数组的前面两个元素到后面两个元素上
let array = [1, 2, 3, 4]
array.copyWithin(2, 0)
// [ 1, 2, 1, 2 ]
console.log(array);
示例2:
// 复制数组的前面两个元素到第三和第四个位置上
let array = [1, 2, 3, 4, 5, 6]
array.copyWithin(2, 0, 2)
//target为2,所以复制到值3所在的索引2处,start为0,end为2,故复制两个元素
// [ 1, 2, 1, 2, 5, 6 ]
console.log(array);
3.3.entries() 方法
entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)。ES6
迭代对象中数组的索引值作为 key, 数组元素作为 value。
语法:
array.entries()
示例:
let array = ["a", "b", "c"]
let obj = array.entries()
// [ 0, 'a' ]
// [ 1, 'b' ]
// [ 2, 'c' ]
for (let key of obj) {
console.log(key);
}
3.4.fill() 方法
fill() 方法用于将一个固定值替换数组的元素。ES6
语法:
array.fill(value, start, end)
参数:
| 参数 | 描述 |
|---|---|
| value | 必需。填充的值。 |
| start | 可选。开始填充位置。 |
| end | 可选。停止填充位置 (默认为 array.length) |
示例1:
let array = ["a", "b", "c"]
array.fill("a")
// [ 'a', 'a', 'a' ]
console.log(array);
示例2:
let array = ["a", "b", "c"]
array.fill("a", 1, 2)
// [ 'a', 'a', 'c' ]
console.log(array);
3.5.indexOf() 方法
indexOf() 方法可返回数组中某个指定的元素位置。
该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
如果在数组中没找到指定元素则返回 -1。
提示:如果你想查找字符串最后出现的位置,请使用lastIndexOf() 方法
语法:
array.indexOf(item,start)
参数:
| 参数 | 描述 |
|---|---|
| item | 必须。查找的元素。 |
| start | 可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。 |
示例1:
let array = ["a", "b", "c"]
let result = array.indexOf("a")
//0
console.log(result);
//-1
console.log(array.indexOf("d"));
示例2:
let array = ["a", "b", "c", "a", "d"]
//从2开始找
let result = array.indexOf("a", 2)
//3
console.log(result);
3.6.isArray() 方法
isArray() 方法用于判断一个对象是否为数组。ES5
如果对象是数组返回 true,否则返回 false。
语法:
Array.isArray(obj)
参数:
| 参数 | 描述 |
|---|---|
| obj | 必需,要判断的对象。 |
示例:
let array = ["a", "b", "c"]
let result = Array.isArray(array)
// true
console.log(result);
3.7.join() 方法
join() 方法用于把数组中的所有元素转换一个字符串。
元素是通过指定的分隔符进行分隔的。
语法:
array.join(separator)
参数值:
| 参数 | 描述 |
|---|---|
| separator | 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。 |
示例1:
let array = ["a", "b", "c"]
let str = array.join()
// a,b,c
console.log(str);
示例2:
let array = ["a", "b", "c"]
// 使用不同的分隔符
let str = array.join(" ")
// a b c
console.log(str);
3.8.keys() 方法
keys() 方法用于从数组创建一个包含数组键的可迭代对象。ES6
如果对象是数组返回 true,否则返回 false。
语法:
array.keys()
示例:
let array = ["a", "b", "c"]
let obj = array.keys()
//0 1 2
for (let key of obj) {
console.log(key);
}
3.9.pop() 方法
pop() 方法用于删除数组的最后一个元素并返回删除的元素。
**注意:**此方法改变数组的长度!
提示: 移除数组第一个元素,请使用 shift() 方法。
语法:
array.pop()
示例:
let array = ["a", "b", "c"]
let result = array.pop()
// c
console.log(result);
// [ 'a', 'b' ]
console.log(array);
3.10.push() 方法
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
注意: 新元素将添加在数组的末尾。
注意: 此方法改变数组的长度。
提示: 在数组起始位置添加元素请使用 unshift() 方法。
语法:
array.push(item1, item2, ..., itemX)
参数:
| 参数 | 描述 |
|---|---|
| item1, item2, ..., itemX | 必需。要添加到数组的元素。 |
返回值
| 类型 | 描述 |
|---|---|
| Number | 数组新长度 |
示例:
let array = ["a", "b", "c"]
let len = array.push("d")
// 4
console.log(len);
// [ 'a', 'b', 'c', 'd' ]
console.log(array);
3.11.reverse() 方法
reverse() 方法用于颠倒数组中元素的顺序。
语法:
array.reverse()
返回值:
| 类型 | 描述 |
|---|---|
| Array | 颠倒顺序后的数组 |
示例:
let array = ["a", "b", "c"]
let newAarray = array.reverse()
// [ 'c', 'b', 'a' ]
console.log(newAarray);
3.12.shift() 方法
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
注意: 此方法改变数组的长度!
提示: 移除数组末尾的元素可以使用 pop() 方法。
语法:
array.shift()
返回值:
| 类型 | 描述 |
|---|---|
| 任何类型(*****) | 数组原来的第一个元素的值(移除的元素)。 |
示例:
let array = ["a", "b", "c"]
let result = array.shift()
// a
console.log(result);
//[ 'b', 'c' ]
console.log(array);
3.13.slice() 方法
slice() 方法可从已有的数组中返回选定的元素。
slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
注意: slice() 方法不会改变原始数组。
语法:
array.slice(start, end)
参数 Values:
| 参数 | 描述 |
|---|---|
| start | 可选。规定从何处开始选取。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。 |
| end | 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。 |
返回值:
| Type | 描述 |
|---|---|
| Array | 返回一个新的数组,包含从 start(包括该元素) 到 end (不包括该元素)的 arrayObject 中的元素。 |
示例:
let array = ["a", "b", "c"]
let newAarray = array.slice(1, 2)
// [ 'b' ]
console.log(newAarray);
3.14.sort() 方法
sort() 方法用于对数组的元素进行排序。
排序顺序可以是字母或数字,并按升序或降序。
默认排序顺序为按字母升序。
**注意:**当数字是按字母顺序排列时"40"将排在"5"前面。
使用数字排序,你必须通过一个函数作为参数来调用。
函数指定数字是按照升序还是降序排列。
这些说起来可能很难理解,你可以通过本页底部实例进一步了解它。
注意: 这种方法会改变原始数组!。
语法:
array.sort(sortfunction)
参数 Values:
| 参数 | 描述 |
|---|---|
| sortfunction | 可选。规定排序顺序。必须是函数。 |
返回值:
| Type | 描述 |
|---|---|
| Array | 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。 |
示例1:
let array = ["b", "c", "a"]
array.sort()
// [ 'a', 'b', 'c' ]
console.log(array);
示例2:
let numbers = [10, 2, 3, 5, 6, 1]
// 升序
numbers.sort((a, b) => a - b)
// [ 1, 2, 3, 5, 6, 10 ]
console.log(numbers);
// 降序
numbers.sort((a, b) => b - a)
// [ 10, 6, 5, 3, 2, 1 ]
console.log(numbers);
示例3:
//字母降序
let array = ["b", "c", "a"]
//字母默认升序
array.sort()
//将数组元素反转得到降序的数组
array.reverse()
// [ 'c', 'b', 'a' ]
console.log(array);
3.15.splice() 方法
splice() 方法用于添加或删除数组中的元素。
注意: 这种方法会改变原始数组。
返回值: 如果删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
语法:
array.splice(index,howmany,item1,.....,itemX)
参数 Values:
| 参数 | 描述 |
|---|---|
| index | 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。 |
| howmany | 可选。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。 |
| item1, ..., itemX | 可选。要添加到数组的新元素 |
返回值:
| Type | 描述 |
|---|---|
| Array | 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。 |
示例1:
let array = ["a", "b", "c"]
array.splice(1, 0, "d")
// [ 'a', 'd', 'b', 'c' ]
console.log(array);
示例2:
let array = ["a", "b", "c"]
//从1开始移除1个元素并在1的位置添加"d"
array.splice(1, 1, "d")
// [ 'a', 'd', 'c' ]
console.log(array);
3.16.toString() 方法
toString() 方法可把数组转换为字符串,并返回结果。
注意: 数组中的元素之间用逗号分隔。
语法:
array.toString()
返回值:
| Type | 描述 |
|---|---|
| String | 数组的所有值用逗号隔开 |
示例:
let array = ["a", "b", "c"]
let result = array.toString()
// a,b,c
console.log(result);
3.17.unshift() 方法
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
注意: 该方法将改变数组的数目。
提示: 将新项添加到数组末尾,请使用 push() 方法。
语法:
array.unshift(item1,item2, ..., itemX)
参数 Values:
| 参数 | 描述 |
|---|---|
| item1,item2, ..., itemX | 可选。向数组起始位置添加一个或者多个元素。 |
示例:
let array = ["a", "b", "c"]
array.unshift("d")
// [ 'd', 'a', 'b', 'c' ]
console.log(array);
3.18.valueOf()方法
valueOf() 方法返回 Array 对象的原始值。
该原始值由 Array 对象派生的所有对象继承。
valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
注意: valueOf() 方法不会改变原数组。
语法:
array.valueOf()
返回值:
| Type | 描述 |
|---|---|
| Array | valueOf() 返回数组值 |
示例:
let array = ["a", "b", "c"]
let result = array.valueOf()
// [ 'a', 'b', 'c' ]
console.log(result);