ES6中的Array的API总结

153 阅读3分钟

创建数组

构造函数

const arr = new Array(); // 创建空数组

const arr = new Array(3); // 创建长度为 3 的数组

const arr = new Array(1, 2, 3); // 创建包含元素 [1,2,3] 的数组

数组字面量

const arr = []; // 创建空数组

const arr = [1, 2, 3]; // 创建包含元素 [1,2,3] 的数组

数组API

增加元素

  1. push(): 在数组的末尾添加一个或多个元素,并返回新的长度。
  2. unshift(): 在数组的开头添加一个或多个元素,并返回新的长度。
  3. concat(): 将多个数组或者数值连接起来,返回一个新的数组。
const arr = [1, 2, 3];

const len = arr.push(4, 5);// [1, 2, 3, 4, 5]

const len = arr.unshift(-2, -1, 0);// [-2, -1, 0, 1, 2, 3]

const arr2 = [4, 5];
const newArr = arr.concat(arr2); // [1, 2, 3, 4, 5, 6]

删除元素

  1. pop(): 从数组的末尾删除一个元素,并返回该元素。
  2. shift(): 从数组的开头删除一个元素,并返回该元素。
  3. splice(): 删除指定位置的元素,并可以插入新的元素。
const arr = [1, 2, 3];

const deletedItem = arr.pop();// [1, 2]

const deletedItem = arr.shift(); // [2, 3]

const deletedItems = arr.splice(1, 1, 4, 5); // [1, 4, 5, 3]

修改元素

  1. fill(): 将数组中的所有元素替换为指定的值。
  2. copyWithin(): 从数组的指定位置开始复制元素,覆盖到指定的位置。
  3. reverse(): 反转数组中元素的顺序。
  4. sort() : 按顺序排序
const arr = [1, 2, 3];

arr.fill(0); // [0, 0, 0]

arr.copyWithin(0, 1, 2); // [2, 2, 3]

arr.reverse(); // [3, 2, 1]

arr.sort((a, b) => a - b); //[1, 2, 3]

查询元素

  1. for 循环:最基本的循环语句
  2. for...of:遍历可迭代对象(如数组、字符串、Set、Map 等)的循环语句,循环体中的语句会对每个元素执行一次。
  3. for...in:遍历对象中的属性的循环语句,循环体中的语句会对每个属性执行一次。
  4. keys():返回一个包含数组所有索引的迭代器对象。
  5. values():返回一个包含数组所有元素的迭代器对象。
  6. entries():返回一个包含数组所有索引及其对应元素的迭代器对象。
  7. indexOf():返回数组中指定元素第一次出现的索引,如果不存在则返回-1。
  8. lastIndexOf():返回数组中指定元素最后一次出现的索引,如果不存在则返回-1。
  9. includes():判断数组中是否包含指定元素,如果包含则返回true,否则返回false。
  10. slice():返回原数组的一个子集,即从原数组中选取一部分元素组成新数组,不会对原数组进行修改。
  11. find():返回数组中第一个符合条件的元素,如果不存在则返回undefined。
  12. findIndex():返回数组中第一个符合条件的元素的索引,如果不存在则返回-1。
  13. every():判断数组中的所有元素是否都满足指定条件,如果都满足则返回true,否则返回false。
  14. filter():返回一个新数组,其中包含符合指定条件的所有元素。
  15. forEach():对数组中的每个元素执行指定操作。
  16. map():返回一个新数组,其中包含每个元素被指定操作处理后的结果。
  17. some():判断数组中是否至少有一个元素满足指定条件,如果有则返回true,否则返回false。
  18. reduce():对数组中的每个元素执行指定操作并返回一个累加器值。
const arr = [1,2,3];

for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}

for (const item of arr) {
  console.log(item);
}

for (const index in arr) {
  console.log(arr[index]);
}

const keys = arr.keys();
console.log(Array.from(keys)); // [0, 1, 2]

const values = arr.values();
console.log(Array.from(values)); // [1, 2, 3]

const entries = arr.entries();
console.log(Array.from(entries)); // [[0, 1], [1, 2], [2, 3]]

const index = arr.indexOf(2);
console.log(index); // 1

const arr = [1,2,2,3];
const index = arr.lastIndexOf(2);
console.log(index); // 2

const isPresent = arr.includes(2);
console.log(isPresent); // true

const slice1 = arr.slice(1, 2);
console.log(slice1); // [2]

const found = arr.find(num => num > 1);
console.log(found); // 2

const foundIndex = arr.findIndex(num => num > 1);
console.log(foundIndex); // 1

const isGreaterThanZero = arr.every(num => num > 0);
console.log(isGreaterThanZero); // true

const filteredArr = arr.filter(num => num > 1);
console.log(filteredArr); // [2, 3]

arr.forEach(num => console.log(num)); // logs 1, 2, 3

const squaredArr = arr.map(num => num ** 2);
console.log(squaredArr); // [1, 4, 9]

const hasEvenNumber = arr.some(num => num % 2 === 0);
console.log(hasEvenNumber); // true

const sum = arr.reduce((acc, num) => acc + num, 0);
console.log(sum); // 6

会修改原始数组的方法

  1. push(element1, ..., elementN)
  2. pop()
  3. shift()
  4. unshift(element1, ..., elementN)
  5. splice(startIndex, deleteCount, element1, ..., elementN)
  6. reverse()
  7. sort()

检测数组

  1. instanceof
  2. isArray
  3. constructor
  4. Object.prototype.toString
const arr = [1, 2, 3];

arr instanceof Array
// true

Array.isArray(arr)
// true

arr.constructor === Array
// true

Object.prototype.toString.call(arr) === '[object Array]'
// true