通过示例解释所有 JavaScript 数组方法( 二 )

numbers = [1, 1, 1, 1, 1];numbers.fill(0, -4, -1);console.log(numbers);// Output : [1, 0, 0, 0, 1]7.filter
返回仅包含验证条件的元素的新数组 。
const names = ["Joe", "Jhon", "Alice"];const namesWith4LettersOrLess = names.filter((name) => name.length <= 4);console.log(namesWith4LettersOrLess); // Output : ["Joe", "Jhon"]8. find
找到第一个验证条件的元素并返回它 。否则,返回未定义 。
const names = ["Joe", "Jhon", "Alice"];const firstNameMatchStartWithJ = names.find((name) => name.startsWith("J"));console.log(firstNameMatchStartWithJ); // Output : Joeconst firstNameMatchStartWithK = names.find((name) => name.startsWith("K"));console.log(firstNameMatchStartWithK); // Output : undefined9. findIndex
找到第一个验证条件的元素并返回其索引 。否则,返回-1 。
const names = ["Joe", "Jhon", "Alice"];const firstNameMatchStartWithJ = names.findIndex((name) => name.startsWith("J"));console.log(firstNameMatchStartWithJ); // Output : 0const firstNameMatchStartWithK = names.findIndex((name) => name.startsWith("K"));console.log(firstNameMatchStartWithK); // Output : -110.findLast
找到验证条件的最后一个元素并将其返回 。否则,返回未定义 。
const names = ["Joe", "Jhon", "Alice"];const lastNameMatchStartWithJ = names.findLast((name) => name.startsWith("J"));console.log(lastNameMatchStartWithJ); // Output : Jhonconst lastNameMatchStartWithK = names.findLast((name) => name.startsWith("K"));console.log(lastNameMatchStartWithK); // Output : undefined11.  findLastIndex
找到最后一个验证条件的元素并返回其索引 。否则,返回-1 。
const names = ["Joe", "Jhon", "Alice"];const lastNameMatchStartWithJ = names.findLastIndex((name) => name.startsWith("J"));console.log(lastNameMatchStartWithJ); // Output : 1const lastNameMatchStartWithK = names.findLastIndex((name) => name.startsWith("K"));console.log(lastNameMatchStartWithK); // Output : -112. flat
在每个元素中展开任何已建立的数组,并根据给定的深度级别继续展开嵌套的数组 。返回新的平面数组 。
const numbers = [1, 2, [3, [4, [5, 6]]]];const flatNumbersLevel1 = numbers.flat();console.log(flatNumbersLevel1); // Output : [1, 2, 3, [4, [5, 6]]]const flatNumbersLevel2 = numbers.flat(2);console.log(flatNumbersLevel2); // Output : [1, 2, 3, 4, [5, 6]]const flatNumbers = numbers.flat(Infinity);console.log(flatNumbers); // Output : [1, 2, 3, 4, 5, 6]13. flatMap
返回一个新数组,其中所有元素均由给定回调修改,并按 1 深度级别展平 。
const users = [{name: "Jhon",votes: [3, 4]},{name: "Joe",votes: [4, 5]}];const allVotes = users.flatMap((user) => user.votes);console.log(allVotes); // Output : [3, 4, 4, 5]14. forEach
迭代数组并对每个元素应用给定的回调 。
const names = ["Joe", "Jhon", "Alice"];names.forEach((name, index, array) =>console.log(`${name} at index ${index} in the array [${array.join(", ")}]`));// Output : Joe at index 0 in the array [Joe, Jhon, Alice]// Output : Jhon at index 1 in the array [Joe, Jhon, Alice]// Output : Alice at index 2 in the array [Joe, Jhon, Alice]15.  from
从可迭代或类似数组创建数组 。
/** Create an array from string */console.log(Array.from("hello"));// Output : ["h", "e", "l", "l", "o"]/** Create an array from an other array and Apply map method */console.log(Array.from([1, 2, 3], (x) => x * 2));// Output : [2, 4, 6]16. fromAsync
从异步可迭代、可迭代或类数组创建数组 。
/** Create an array from an array of async elements */const asyncArray = [new Promise((resolve) => resolve(0)),new Promise((resolve) => resolve(1))];


推荐阅读