数组创建
const arr1 = []; // 数组字面量
const arr2 = new Array(); // 数组对象
获取数组
const arr = [1, 2, 3, 4, 5];
console.log(arr[0]); // 1
console.log(arr[5]); // undefined
数组长度length
const arr = [1, 2, 3, 4, 5];
console.log(arr.length); // 5
数组遍历forEach()
const arr = [1, 2, 3, 4, 5]
for (let index = 0; index < arr.length; index++) {
console.log(arr[index])
}
/*
* 1
* 2
* 3
* 4
* 5
*/
/*
* value:数组元素
* index:元素索引
* array:数组对象
*
* 可以改变数组对象内容
*/
arr.forEach(function (value, index, array) {
console.log(value + 1, index + 1, array)
})
增删元素push()``unshift()``pop()``shift()
const arr = [1, 2];
arr[2] = 3;
console.log(arr); // [ 1, 2, 3 ]
// 向数组后面增加一个或多个元素,返回新数组长度,原来的数组发生变化
let push = arr.push(4, 5);
// 5 [ 1, 2, 3, 4, 5 ]
console.log(push, arr);
// 向数组前面增加一个或多个元素,返回新数组长度,原来的数组发生变化
let unshift = arr.unshift(-1, 0);
// 7 [ -1, 0, 1, 2, 3, 4, 5 ]
console.log(unshift, arr);
// 删除数组最后一个元素,一次只能删除一个,返回删除的元素,原来的数组发生变化
let pop = arr.pop();
// 5 [ -1, 0, 1, 2, 3, 4 ]
console.log(pop, arr);
// 删除数组第一个元素,一次只能删除一个,返回删除的元素,原来的数组发生变化
let shift = arr.shift();
// -1 [ 0, 1, 2, 3, 4 ]
console.log(shift, arr);
数组索引indexOf()``lastIndexOf()
const arr = [0, 51, 92, 13, 24, 45, 6, 67, 45, 89, 39];
// indexOf(要查找的元素, 开始查找的位置)
// 从前往后找
// 参数为数组元素,返回该元素对应的索引序号,重复的元素返回第一个满足的索引序号,找不到返回 -1
console.log(arr.indexOf(45)); // 5
console.log(arr.indexOf(45, 6)); // 8
console.log(arr.indexOf(77)); // -1
// lastIndexOf(要查找的元素, 开始查找的位置)
// 从后往前找
// 参数为数组元素,返回该元素对应的索引序号,重复的元素返回第一个满足的索引序号,找不到返回 -1
console.log(arr.lastIndexOf(45)); // 8
console.log(arr.lastIndexOf(45, 7)); // 5
console.log(arr.lastIndexOf(77)); // -1
数组排序sort()
const arr = [0, 51, 92, 13, 24, 45, 6, 67, 89, 39];
let sort = arr.sort();
console.log(sort, arr); // [0, 13, 24, 39, 45, 51, 6, 67, 89, 92]
let sort = arr.sort((a, b) => a - b);
console.log(sort, arr); // [0, 6, 13, 24, 39, 45, 51, 67, 89, 92]
a-b
升序排序b-a
降序排序
数组翻转reverse()
const arr = [0, 51, 92, 13, 24, 45, 6, 67, 89, 39];
let reverse = arr.reverse(); // 数组翻转
console.log(reverse, arr); // [39, 89, 67, 6, 45, 24, 13, 92, 51, 0]
数组连接concat()
const arr = [0, 1, 2, 3];
const newArr = arr.concat([4, 5, 6]);
// 连接后生成一个新的数组,不影响原来数组
console.log(arr, newArr); // [0, 1, 2, 3, 4, 5, 6]
数组截取slice()
const arr = [1, 2, 3, 4, 5]
/*
* slice(start, end) 不改变原数组返回一个新数组
* start: 开始截取位置
* end: 结束截取位置
* [start, end)
* return: Array
*/
console.log(arr.slice(2, 4)) // [ 3, 4 ]
// 从开始位置一直截取
console.log(arr.slice(2)) // [ 3, 4, 5 ]
// 从开始位置截取到倒数的位置
console.log(arr.slice(2, -2)) // [ 3 ]
// 从倒数位置开始
console.log(arr.slice(-2)) // [ 4, 5 ]
splice()
是否是数组
const arr = [];
const obj = {};
console.log(arr instanceof Array); // true
console.log(obj instanceof Array); // false
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(obj)); // false
Array.isArray()
优于instanceof
因为Array.isArray()
能检测iframes
数组转字符串join()
const arr = [0, 51, 92, 13, 24, 45, 6, 67, 45, 89, 39];
console.log(arr.toString()); // 0,51,92,13,24,45,6,67,45,89,39
// join(分隔符),默认以逗号分隔
console.log(arr.join()); // 0,51,92,13,24,45,6,67,45,89,39
console.log(arr.join("*")); // 0*51*92*13*24*45*6*67*45*89*39
console.log(arr.join("-")); // 0-51-92-13-24-45-6-67-45-89-39
console.log(arr.join(" ")); // 0 51 92 13 24 45 6 67 45 89 39