使用回调函数移除数组元素

JavaScriptJavaScriptBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,我们将处理一个涉及操作数组的 JavaScript 编程挑战。这个实验的目标是编写一个函数,该函数从数组末尾移除元素,直到满足特定条件,并返回移除的元素。你将使用各种 JavaScript 数组方法和一个回调函数来完成这个挑战。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/BasicConceptsGroup -.-> javascript/loops("Loops") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28641{{"使用回调函数移除数组元素"}} javascript/data_types -.-> lab-28641{{"使用回调函数移除数组元素"}} javascript/arith_ops -.-> lab-28641{{"使用回调函数移除数组元素"}} javascript/comp_ops -.-> lab-28641{{"使用回调函数移除数组元素"}} javascript/cond_stmts -.-> lab-28641{{"使用回调函数移除数组元素"}} javascript/loops -.-> lab-28641{{"使用回调函数移除数组元素"}} javascript/spread_rest -.-> lab-28641{{"使用回调函数移除数组元素"}} end

从数组末尾移除元素,直到满足某个条件

要开始练习编码,请打开终端/SSH 并输入 node

下面是一个函数,它会从数组末尾移除元素,直到传入的函数返回 false。然后,它会返回被移除的元素。

要使用这个函数,使用展开运算符 (...) 和 Array.prototype.reverse() 创建数组的反向副本。然后,使用 for...of 循环遍历 Array.prototype.entries() 返回的反向副本,直到函数返回的值为假值。

回调函数 fn 接受一个参数,即元素的值。最后,使用 Array.prototype.slice() 返回被移除的元素。

const takeRightWhile = (arr, fn) => {
  for (const [i, val] of [...arr].reverse().entries())
    if (!fn(val)) return i === 0 ? [] : arr.slice(-i);
  return arr;
};

下面是一个如何使用这个函数的示例:

takeRightWhile([1, 2, 3, 4], (n) => n >= 3); // [3, 4]

总结

恭喜你!你已经完成了“从数组末尾移除元素,直到满足条件”这个实验。你可以在 LabEx 中练习更多实验来提升你的技能。