数组是有序集合, 每个值叫做一个元素, 而每个元素在数组中有一个位置, 以数字表示, 称为索引。Javascript的数组是无类型的, 数组元素可以是任意类型, 同一个数组中的不同元素可能是对象或数组。
- 直接声明
var arr = ['Javascript', 'PHP', 'Java']
console.log(arr)
- 声明一个空数组, 再通过
push 方法插入
var arr = []
arr.push('Javascript')
arr.push('PHP')
arr.push('Java')
console.log(arr)
- 通过
new 关键字声明
var arr = new Array('Javascript', 'PHP', 'Java')
console.log(arr)
数组的索引从 0 开始。
var arr = ['Javascript', 'PHP', 'Java']
console.log(arr[0], arr[1], arr[2])
arr[0] = 'Python'
console.log(arr[0])
每个数组都有一个 length 属性, 表示数组元素的个数。
var arr = ['Javascript', 'PHP', 'Java']
console.log('数组长度为:', arr.length)
arr.push('Python')
console.log('数组长度为:', arr.length)
- 数组中可以存入对象。
var arr = [
{
height:170,
age: 25,
weight: 120,
eat: function () {
console.log('吃饭')
},
sleep: function () {
console.log('睡觉')
},
},
'Javascript',
'PHP',
'Java'
]
console.log(arr[0])
- 获取数组的第一个元素和最后一个元素
数组的第一个元素索引为 0 , 最后一个元素索引为 length - 1 。
var arr = ['Javascript', 'PHP', 'Java']
console.log('数组第一个元素为:', arr[0])
console.log('数组第一个元素为:', arr[arr.length - 1])
- 向数组中添加元素
向数组中添加新元素使用 push(elem1, elem2, ...., elemX) 方法, 其在数组尾部插入一个或多个元素。
var arr = ['Javascript', 'PHP', 'Java']
arr.push('Python')
arr.push('Go', 'Dark')
console.log(arr)
console.log('数组长度为:', arr.length)
- 向数组头部添加元素
向数组中添加新元素使用 unshift(elem1, elem2, ...., elemX) 方法, 其在数组头部插入一个或多个元素。
var arr = ['Javascript', 'PHP', 'Java']
arr.unshift('Python')
arr.unshift('Go', 'Dark')
console.log(arr)
console.log('数组长度为:', arr.length)
- 把数组所有元素组成一个字符串
使用 join(separator) , 其中 separator 是可选的, 为分割符。
var arr = ['Javascript', 'PHP', 'Java']
console.log(arr.join(','))
- 删除数组中的元素
使用 splice(index, count, item1, ... , itemX)
- index: 必需。规定添加/删除项目的位置, 使用负数可从数组结尾处规定位置。
- count: 必需。要删除的项目数量。如果设置为 0, 则不会删除项目。
- item1, …, itemX: 可选。向数组添加的新项目。
var arr = ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
arr.splice(1, 1)
console.log(arr)
arr.splice(1, 2)
console.log(arr)
arr.splice(1, 2, 'Flutter', 'C++')
console.log(arr)
删除数组中的元素还可以使用 delete 方法, 删除后原位置值变为 undefined 。
var arr = ['Javascript', 'PHP', 'Java']
delete arr[1]
console.log(arr)
- 删除并返回数组的最后一个元素
使用 pop() 方法删除并返回数组的最后一个元素。注意: 会改变数组的长度 。
var arr = ['Javascript', 'PHP', 'Java']
console.log(arr.pop())
console.log(arr)
console.log('数组长度为:', arr.length)
- 删除并返回数组的第一个元素
使用 shift() 方法删除并返回第一个元素的值。注意: 会改变数组的长度 。
var arr = ['Javascript', 'PHP', 'Java']
console.log(arr.shift())
console.log(arr)
console.log('数组长度为:', arr.length)
- 颠倒数组中元素的顺序
使用 reverse()
var arr = ['Javascript', 'PHP', 'Java']
console.log(arr.reverse())
- 数组中返回选定的元素
使用 slice(startIndex, endIndex) 返回一个新的数组, 该方法并不会修改数组, 而是返回一个子数组, 包含从 startIndex 到 endIndex (不包括该元素)的数组元素。
- startIndex: 必需。规定从何处开始选取。如果是负数, 那么它规定从数组尾部开始算起的位置。也就是说, -1 指最后一个元素, -2 指倒数第二个元素, 以此类推。
- endIndex: 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数, 那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数, 那么它规定的是从数组尾部开始算起的元素。
var arr = ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
var newArr = arr.slice(1, 3)
console.log('原数组为:', arr)
console.log('新数组为:', newArr)
- 连接两个或更多的数组
使用 concat(arr1, ..., arrX) 连接两个或多个数组。
var arr1 = ['Javascript', 'PHP', 'Java']
var arr2 = ['Go', 'Dark', 'C++']
var arr = arr1.concat(arr2)
console.log(arr)
还可以通过新建一个数组, 使用 ...arr 来存入到新数组中。
var arr1 = ['Javascript', 'PHP', 'Java']
var arr2 = ['Go', 'Dark', 'C++']
var newArr = [...arr1, ...arr2]
console.log(newArr)
- 查找数组出现的位置
使用 indexOf(index, fromIndex) 和 lastIndexOf(index, fromIndex) , 如未检索到数据, 则返回 -1 。
- indexOf: 返回某个指定的字符串值在字符串中首次出现的位置。
- lastIndexOf: 返回一个指定的字符串值最后出现的位置, 在一个字符串中的指定位置从后向前搜索。
- index: 必需。规定需检索的字符串值。
- fromIndex: 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 arr.length - 1。如省略该参数, 则将从字符串的最后一个字符处开始检索。
var arr = ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
console.log(arr.indexOf('Python'))
console.log(arr.indexOf('C++'))
console.log(arr.lastIndexOf('Python'))
console.log(arr.lastIndexOf('C++'))
- 遍历数组
使用 for循环 遍历, 或使用 forEach(function(currentValue, index, arr), thisValue) 函数。
- for循环: 格式有两种:
for(var i = 0; i < arr.length; i++) 或 for(var a of arr) 。 - forEach: 接受一个
function 函数, 包含三个入参:
- currentValue: 必需。当前元素。
- index: 可选。当前元素的索引值。
- arr: 可选。当前元素所属的数组对象。
- thisValue: 可选。对象作为该执行回调时使用, 传递给函数, 用作 “this” 的值。 如果省略了 thisValue , “this” 的值为 “undefined”。
var arr = ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
for(var i = 0; i < arr.length; i++) {
console.log(arr[i])
}
for(var a of arr) {
console.log(a)
}
arr.forEach(function (value, index, a) {
console.log(value)
console.log(index)
})
- 查找数值一个或多个元素
使用 filter(function(currentValue, index, arr), thisValue) 方法, 并返回符合条件所有元素的数组, 该数组为一个新数组, 参数同 forEach 方法。
var arr = ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
var newArr = arr.filter(function (currentValue, index) {
return currentValue !== 'Python'
})
console.log(newArr)
- 将数组元素计算为一个值
使用 reduce(function(total, currentValue, currentIndex, arr), initialValue) 方法,将数组中的每个值(从左到右)开始缩减,最终计算为一个值,另有一个方法 reduceRight(total, currentValue, currentIndex, arr), initialValue) 是从右往左缩减计算。
- total: 必需。初始值, 或者计算结束后的返回值。
- currentValue: 必需。当前元素。
- currentIndex: 可选。当前元素的索引。
- arr: 可选。当前元素所属的数组对象。
- initialValue: 可选。传递给函数的初始值。
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var count = arr.reduce(function (total, currentValue, currentIndex, arr) {
return total + currentValue;
})
console.log('数组总和为:', count)
- 数组的排序
数组的排序使用 sort(func) 方法在原数组上直接排序, 其中 func 是一个可选函数。
- func: 可选。排序函数。
- 若 a 小于 b, 在排序后的数组中 a 应该出现在 b 之前, 则返回一个小于 0 的值, 降序。
- 若 a 等于 b, 则返回 0。
- 若 a 大于 b, 则返回一个大于 0 的值, 升序。
var arr = [1, 3, 8, 7, 5, 9, 2, 4, 10, 6]
arr.sort()
console.log(arr)
arr.sort(function (a, b) {
return a - b
})
console.log(arr)
arr.sort(function (a, b) {
return b - a
})
console.log(arr)
|