数组创建
const arr1 = []; // 数组字面量const arr2 = new Array(); // 数组对象
获取数组
const arr = [1, 2, 3, 4, 5];console.log(arr[0]); // 1console.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(要查找的元素, 开始查找的位置)// 从前往后找// 参数为数组元素,返回该元素对应的索引序号,重复的元素返回第一个满足的索引序号,找不到返回 -1console.log(arr.indexOf(45)); // 5console.log(arr.indexOf(45, 6)); // 8console.log(arr.indexOf(77)); // -1// lastIndexOf(要查找的元素, 开始查找的位置)// 从后往前找// 参数为数组元素,返回该元素对应的索引序号,重复的元素返回第一个满足的索引序号,找不到返回 -1console.log(arr.lastIndexOf(45)); // 8console.log(arr.lastIndexOf(45, 7)); // 5console.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); // trueconsole.log(obj instanceof Array); // falseconsole.log(Array.isArray(arr)); // trueconsole.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,39console.log(arr.join("*")); // 0*51*92*13*24*45*6*67*45*89*39console.log(arr.join("-")); // 0-51-92-13-24-45-6-67-45-89-39console.log(arr.join(" ")); // 0 51 92 13 24 45 6 67 45 89 39
