数组是有序集合, 每个值叫做一个元素, 而每个元素在数组中有一个位置, 以数字表示, 称为索引。Javascript的数组是无类型的, 数组元素可以是任意类型, 同一个数组中的不同元素可能是对象或数组。
var arr = ['Javascript', 'PHP', 'Java']
console.log(arr) // ['Javascript', 'PHP', 'Java']
push
方法插入var arr = []
arr.push('Javascript')
arr.push('PHP')
arr.push('Java')
console.log(arr) // ['Javascript', 'PHP', 'Java']
new
关键字声明var arr = new Array('Javascript', 'PHP', 'Java')
console.log(arr) // ['Javascript', 'PHP', 'Java']
0
开始。var arr = ['Javascript', 'PHP', 'Java']
// [0]是数组第一个元素: Javascript, [1]是数组第二个元素: PHP, [2]是数组第三个元素: Java
console.log(arr[0], arr[1], arr[2]) // Javascript PHP Java
arr[0] = 'Python' // 更改数组第一个元素值为 Python
console.log(arr[0]) // Python
length
属性, 表示数组元素的个数。var arr = ['Javascript', 'PHP', 'Java']
console.log('数组长度为:', arr.length) // 3
arr.push('Python') // 在最后添加一个元素 Python
console.log('数组长度为:', arr.length) // 4
var arr = [
{
height:170,
age: 25,
weight: 120,
eat: function () {
console.log('吃饭')
},
sleep: function () {
console.log('睡觉')
},
},
'Javascript',
'PHP',
'Java'
]
// 数组第一个元素 arr[0] 为对象
console.log(arr[0]) // {height: 170, age: 25, weight: 120, eat: ƒ, sleep: ƒ}
0
, 最后一个元素索引为 length - 1
。var arr = ['Javascript', 'PHP', 'Java']
console.log('数组第一个元素为:', arr[0]) // Javascript
console.log('数组第一个元素为:', arr[arr.length - 1]) // Java
push(elem1, elem2, ...., elemX)
方法, 其在数组尾部插入一个或多个元素。var arr = ['Javascript', 'PHP', 'Java']
arr.push('Python')
arr.push('Go', 'Dark')
console.log(arr) // ['Javascript', 'PHP', 'Java', 'Python', 'Go', 'Dark']
console.log('数组长度为:', arr.length) // 6
unshift(elem1, elem2, ...., elemX)
方法, 其在数组头部插入一个或多个元素。var arr = ['Javascript', 'PHP', 'Java']
arr.unshift('Python')
arr.unshift('Go', 'Dark')
console.log(arr) // ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
console.log('数组长度为:', arr.length) // 6
join(separator)
, 其中 separator
是可选的, 为分割符。var arr = ['Javascript', 'PHP', 'Java']
console.log(arr.join(',')) // Javascript,PHP,Java
splice(index, count, item1, ... , itemX)
// 删除一个元素
var arr = ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
arr.splice(1, 1) // 删除索引位为 1 的元素
console.log(arr) // ['Go', 'Python', 'Javascript', 'PHP', 'Java'], 删除了 `Dark`
// 删除多个元素
arr.splice(1, 2) // 从索引位1开始, 连续删除两个元素
console.log(arr) // ['Go', 'PHP', 'Java'], 删除了 `Python`, `Javascript`
// 添加多个元素
arr.splice(1, 2, 'Flutter', 'C++') // 从索引位1开始, 连续删除两个元素, 再添加两个元素
console.log(arr) // ['Go', 'Flutter', 'C++']
delete
方法, 删除后原位置值变为 undefined
。var arr = ['Javascript', 'PHP', 'Java']
delete arr[1]
console.log(arr) // Javascript, undefined ,Java
pop()
方法删除并返回数组的最后一个元素。注意: 会改变数组的长度
。var arr = ['Javascript', 'PHP', 'Java']
console.log(arr.pop()) // Java
console.log(arr) // ['Javascript', 'PHP']
console.log('数组长度为:', arr.length) // 2
shift()
方法删除并返回第一个元素的值。注意: 会改变数组的长度
。var arr = ['Javascript', 'PHP', 'Java']
console.log(arr.shift()) // Javascript
console.log(arr) // ['PHP', 'Java']
console.log('数组长度为:', arr.length) // 2
reverse()
var arr = ['Javascript', 'PHP', 'Java']
console.log(arr.reverse()) // ['Java', 'PHP', 'Javascript']
slice(startIndex, endIndex)
返回一个新的数组, 该方法并不会修改数组, 而是返回一个子数组, 包含从 startIndex 到 endIndex (不包括该元素)的数组元素。var arr = ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
var newArr = arr.slice(1, 3) // 索引位置为 1 和 2 的两个元素
console.log('原数组为:', arr) // ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
console.log('新数组为:', newArr) // ['Dark', 'Python']
concat(arr1, ..., arrX)
连接两个或多个数组。var arr1 = ['Javascript', 'PHP', 'Java']
var arr2 = ['Go', 'Dark', 'C++']
var arr = arr1.concat(arr2)
console.log(arr) // ['Javascript', 'PHP', 'Java', 'Go', 'Dark', 'C++']
...arr
来存入到新数组中。var arr1 = ['Javascript', 'PHP', 'Java']
var arr2 = ['Go', 'Dark', 'C++']
var newArr = [...arr1, ...arr2]
console.log(newArr) // ['Javascript', 'PHP', 'Java', 'Go', 'Dark', 'C++']
indexOf(index, fromIndex)
和 lastIndexOf(index, fromIndex)
, 如未检索到数据, 则返回 -1
。var arr = ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
console.log(arr.indexOf('Python')) // 2
console.log(arr.indexOf('C++')) // -1
console.log(arr.lastIndexOf('Python')) // 2
console.log(arr.lastIndexOf('C++')) // -1
for循环
遍历, 或使用 forEach(function(currentValue, index, arr), thisValue)
函数。for(var i = 0; i < arr.length; i++)
或 for(var a of arr)
。function
函数, 包含三个入参:
var arr = ['Go', 'Dark', 'Python', 'Javascript', 'PHP', 'Java']
// for循环遍历
for(var i = 0; i < arr.length; i++) {
console.log(arr[i]) // 打印输出每个元素
}
for(var a of arr) {
console.log(a) // 打印输出每个元素
}
// forEach函数遍历
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' // 过滤不是 `Python` 的值
})
console.log(newArr) // ['Go', 'Dark', 'Javascript', 'PHP', 'Java']
reduce(function(total, currentValue, currentIndex, arr), initialValue)
方法,将数组中的每个值(从左到右)开始缩减,最终计算为一个值,另有一个方法 reduceRight(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) // 55
sort(func)
方法在原数组上直接排序, 其中 func
是一个可选函数。var arr = [1, 3, 8, 7, 5, 9, 2, 4, 10, 6]
arr.sort() // 默认排序 [1, 10, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr)
arr.sort(function (a, b) {
return a - b
})
console.log(arr) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 升序
arr.sort(function (a, b) {
return b - a
})
console.log(arr) // [10, 9, 8, 7, 6, 5, 4, 3, 2, 1], 降序