JavaScript数组方法

104 阅读9分钟

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描述
ArrayvalueOf() 返回数组值

示例:

let array = ["a", "b", "c"]
let result = array.valueOf()
// [ 'a', 'b', 'c' ]
console.log(result);