数组创建

  1. const arr1 = []; // 数组字面量
  2. const arr2 = new Array(); // 数组对象

获取数组

  1. const arr = [1, 2, 3, 4, 5];
  2. console.log(arr[0]); // 1
  3. console.log(arr[5]); // undefined

数组长度length

  1. const arr = [1, 2, 3, 4, 5];
  2. console.log(arr.length); // 5

数组遍历forEach()

  1. const arr = [1, 2, 3, 4, 5]
  2. for (let index = 0; index < arr.length; index++) {
  3. console.log(arr[index])
  4. }
  5. /*
  6. * 1
  7. * 2
  8. * 3
  9. * 4
  10. * 5
  11. */
  12. /*
  13. * value:数组元素
  14. * index:元素索引
  15. * array:数组对象
  16. *
  17. * 可以改变数组对象内容
  18. */
  19. arr.forEach(function (value, index, array) {
  20. console.log(value + 1, index + 1, array)
  21. })

增删元素push()``unshift()``pop()``shift()

  1. const arr = [1, 2];
  2. arr[2] = 3;
  3. console.log(arr); // [ 1, 2, 3 ]
  4. // 向数组后面增加一个或多个元素,返回新数组长度,原来的数组发生变化
  5. let push = arr.push(4, 5);
  6. // 5 [ 1, 2, 3, 4, 5 ]
  7. console.log(push, arr);
  8. // 向数组前面增加一个或多个元素,返回新数组长度,原来的数组发生变化
  9. let unshift = arr.unshift(-1, 0);
  10. // 7 [ -1, 0, 1, 2, 3, 4, 5 ]
  11. console.log(unshift, arr);
  12. // 删除数组最后一个元素,一次只能删除一个,返回删除的元素,原来的数组发生变化
  13. let pop = arr.pop();
  14. // 5 [ -1, 0, 1, 2, 3, 4 ]
  15. console.log(pop, arr);
  16. // 删除数组第一个元素,一次只能删除一个,返回删除的元素,原来的数组发生变化
  17. let shift = arr.shift();
  18. // -1 [ 0, 1, 2, 3, 4 ]
  19. console.log(shift, arr);

数组索引indexOf()``lastIndexOf()

  1. const arr = [0, 51, 92, 13, 24, 45, 6, 67, 45, 89, 39];
  2. // indexOf(要查找的元素, 开始查找的位置)
  3. // 从前往后找
  4. // 参数为数组元素,返回该元素对应的索引序号,重复的元素返回第一个满足的索引序号,找不到返回 -1
  5. console.log(arr.indexOf(45)); // 5
  6. console.log(arr.indexOf(45, 6)); // 8
  7. console.log(arr.indexOf(77)); // -1
  8. // lastIndexOf(要查找的元素, 开始查找的位置)
  9. // 从后往前找
  10. // 参数为数组元素,返回该元素对应的索引序号,重复的元素返回第一个满足的索引序号,找不到返回 -1
  11. console.log(arr.lastIndexOf(45)); // 8
  12. console.log(arr.lastIndexOf(45, 7)); // 5
  13. console.log(arr.lastIndexOf(77)); // -1

数组排序sort()

  1. const arr = [0, 51, 92, 13, 24, 45, 6, 67, 89, 39];
  2. let sort = arr.sort();
  3. console.log(sort, arr); // [0, 13, 24, 39, 45, 51, 6, 67, 89, 92]
  4. let sort = arr.sort((a, b) => a - b);
  5. console.log(sort, arr); // [0, 6, 13, 24, 39, 45, 51, 67, 89, 92]
  • a-b升序排序
  • b-a降序排序

数组翻转reverse()

  1. const arr = [0, 51, 92, 13, 24, 45, 6, 67, 89, 39];
  2. let reverse = arr.reverse(); // 数组翻转
  3. console.log(reverse, arr); // [39, 89, 67, 6, 45, 24, 13, 92, 51, 0]

数组连接concat()

  1. const arr = [0, 1, 2, 3];
  2. const newArr = arr.concat([4, 5, 6]);
  3. // 连接后生成一个新的数组,不影响原来数组
  4. console.log(arr, newArr); // [0, 1, 2, 3, 4, 5, 6]

数组截取slice()

  1. const arr = [1, 2, 3, 4, 5]
  2. /*
  3. * slice(start, end) 不改变原数组返回一个新数组
  4. * start: 开始截取位置
  5. * end: 结束截取位置
  6. * [start, end)
  7. * return: Array
  8. */
  9. console.log(arr.slice(2, 4)) // [ 3, 4 ]
  10. // 从开始位置一直截取
  11. console.log(arr.slice(2)) // [ 3, 4, 5 ]
  12. // 从开始位置截取到倒数的位置
  13. console.log(arr.slice(2, -2)) // [ 3 ]
  14. // 从倒数位置开始
  15. console.log(arr.slice(-2)) // [ 4, 5 ]

splice()

是否是数组

  1. const arr = [];
  2. const obj = {};
  3. console.log(arr instanceof Array); // true
  4. console.log(obj instanceof Array); // false
  5. console.log(Array.isArray(arr)); // true
  6. console.log(Array.isArray(obj)); // false

Array.isArray()优于instanceof因为Array.isArray()能检测iframes

数组转字符串join()

  1. const arr = [0, 51, 92, 13, 24, 45, 6, 67, 45, 89, 39];
  2. console.log(arr.toString()); // 0,51,92,13,24,45,6,67,45,89,39
  3. // join(分隔符),默认以逗号分隔
  4. console.log(arr.join()); // 0,51,92,13,24,45,6,67,45,89,39
  5. console.log(arr.join("*")); // 0*51*92*13*24*45*6*67*45*89*39
  6. console.log(arr.join("-")); // 0-51-92-13-24-45-6-67-45-89-39
  7. console.log(arr.join(" ")); // 0 51 92 13 24 45 6 67 45 89 39