数组过滤

为了找到数据集中仍在使用的脚本,以下函数可能会有所帮助。 它过滤掉数组中未通过测试的元素:

  1. function filter(array, test) {
  2. let passed = [];
  3. for (let element of array) {
  4. if (test(element)) {
  5. passed.push(element);
  6. }
  7. }
  8. return passed;
  9. }
  10. console.log(filter(SCRIPTS, script => script.living));
  11. // → [{name: "Adlam", …}, …]

该函数使用名为test的参数(一个函数值)填充计算中的“间隙” - 决定要收集哪些元素的过程。

需要注意的是,filter函数并没有从当前数组中删除元素,而是新建了一个数组,并将满足条件的元素存入新建的数组中。这个函数是一个“纯函数”,因为该函数并未修改给定的数组。

forEach一样,filter函数也是标准的数组方法。本例中定义的函数只是用于展示内部实现原理。今后我们会使用以下方法来过滤数据:

  1. console.log(SCRIPTS.filter(s => s.direction == "ttb"));
  2. // → [{name: "Mongolian", …}, …]