如何在 TypeScript 中过滤数组中的值?

typescriptserver side programmingprogramming

在本教程中,用户将学习如何在 TypeScript 中过滤数组中的值。过滤器是处理从数据库获取的数据的重要操作。

例如,每个人都在 Amazon、Flipkart 等网站上看到过过滤器,可以根据不同的标准过滤产品。要创建类似的东西,我们可以直接从数据库中获取过滤后的数据,也可以从产品数组中获取整个数据并在前端进行过滤,这取决于一些标准,例如数据库大小、性能等。

使用 Array.filter() 方法

数组的 filter() 方法允许我们根据某些单个或多个条件从数组中过滤不同的值。它将回调函数作为参数。用户可以在回调函数中为每个数组元素执行某些条件。如果回调函数对某个元素返回 true,则 filter() 方法会在结果数组中包含该元素。

语法

用户可以按照以下语法使用 filter() 方法过滤数组中的值。

let array: Array<number> = [10, 20, 30, 54, 43, 32, 90, 80];
let result: Array<number> = array.filter(callback_func(element, index, array) {
   // 条件来过滤值
});

在上面的语法中,我们创建了数组并通过引用数组来调用过滤方法。

参数

  • callback_func − 它是一个包含条件来过滤数组值的函数。回调函数的条件根据当前元素是否符合条件返回布尔值。

  • element − 它是数组的一个元素。

  • index − 它是元素的索引。

  • array − 它是我们应用 filter() 方法的当前数组。

示例 1

在下面的示例中,我们创建了一个数字数组。我们希望从数组中过滤出所有能被 10 整除的值。在 filter 方法中,我们将箭头函数作为回调函数传递,如果当前元素能被 10 整除,则返回 true。否则,返回 false。

结果数组将包含所有满足回调函数条件的元素,用户可以在输出中观察到这些元素。

let array: Array<number> = [10, 20, 30, 54, 43, 32, 90, 80];
// 过滤出所有能被 10 整除的值。
let result: Array<number> = array.filter(
   //  箭头函数作为回调函数
   (element, index, array) => {
    // 如果元素除以 10,则返回 true,否则返回 false。
      if (element % 10 == 0) {
         return true;
      }
      return false;
   }
);
console.log("All filtered values are " + result);

编译后,它将生成以下 JavaScript 代码 -

var array = [10, 20, 30, 54, 43, 32, 90, 80];
// 过滤所有能被 10 整除的值。
var result = array.filter(
// 箭头函数作为回调函数
function (element, index, array) {
   // 如果元素能被 10 整除,则返回 true,否则返回 false。
   if (element % 10 == 0) {
      return true;
   }
   return false;
});
console.log("All filtered values are " + result);

输出

上述代码将产生以下输出 -

All filtered values are 10,20,30,90,80

示例 2

在下面的示例中,我们创建了一个对象数组,其中包含名称和编程语言作为成员。之后,我们使用 filter 方法从数组中过滤对象,其中包含"c++"作为编程语言。

接下来,我们遍历"CppTutors"数组以打印所有包含"c++"语言的对象。

// 包含名称和编程语言的对象数组
let tutors: Array<{ name: string; language: string }> = [];
// 将一些记录推送到数组
tutors.push({ name: "Jems", language: "C++" });
tutors.push({ name: "Bond", language: "Python" });
tutors.push({ name: "Trump", language: "C++" });
tutors.push({ name: "Alice", language: "Java" });
tutors.push({ name: "Nerd", language: "C" });
//  过滤所有 CPP 导师。
const Cpptutors = tutors.filter((tutor, index) => {
  return tutor.language == "C++";
});
// 打印所有 CPP 导师的姓名。
for (let tutor of Cpptutors) {
   console.log(tutor.name + " is a CPP tutor.");
}

编译后,它将生成以下 JavaScript 代码 -

// 包含名称和编程语言的对象数组
var tutors = [];
// 将一些记录推送到数组
tutors.push({ name: "Jems", language: "C++" });
tutors.push({ name: "Bond", language: "Python" });
tutors.push({ name: "Trump", language: "C++" });
tutors.push({ name: "Alice", language: "Java" });
tutors.push({ name: "Nerd", language: "C" });
// 过滤所有 CPP 导师。
var Cpptutors = tutors.filter(function (tutor, index) {
return tutor.language == "C++";
});
// 打印所有 CPP 导师的姓名。
for (var _i = 0, Cpptutors_1 = Cpptutors; _i < Cpptutors_1.length; _i++) {
   var tutor = Cpptutors_1[_i];
   console.log(tutor.name + " is a CPP tutor.");
}

输出

上述代码将产生以下输出 -

Jems is a CPP tutor.
Trump is a CPP tutor.

自定义算法过滤数组值

在此方法中,我们将简单地遍历数组的每个元素。对于每个元素,我们将检查该元素是否满足过滤条件,然后将其推送到过滤器数组。

语法

用户可以按照以下语法使用自定义算法过滤数组值。

// 遍历数组的每个元素。
for (let i = 0; i < array.length; i++) {
   // 条件来过滤值。
   if () {
   // 如果条件满足,则将元素推送到filteredValues数组。
      filteredValues.push(array[i]);
   }
}

算法

用户可以按照以下算法实现上述语法。

步骤 1 - 创建数组来存储过滤后的值。

步骤 2 - 使用 for 循环遍历每个数组元素。

步骤 3 - 如果过滤条件满足元素,则将其推送到过滤数组。

步骤 4 - 过滤后的数组包含满足过滤条件的每个值。

示例

在下面的示例中,我们创建了一个年龄数组。简单来说,我们应用上述算法过滤所有年龄在 18 岁以上的年龄。

// 年龄数组
let ages: Array<number> = [32, 12, 34, 54, 65, 76, 21, 11, 4, 34, 32];
// 存储所有 18 岁以上年龄的数组
let above18: Array<number> = [];
// 遍历年龄并过滤所有 18 岁以上的年龄。
for (let i = 0; i < ages.length; i++) {
   if (ages[i] > 18) {
      // 将所有年龄在 18 岁以上的推送到 above18 数组。
      above18.push(ages[i]);
   }
}

// 打印所有 18 岁以上的年龄。
console.log("所有年龄 18 岁以上。");
console.log(above18);

编译后,它将生成以下 JavaScript 代码 -

// 年龄数组
var ages = [32, 12, 34, 54, 65, 76, 21, 11, 4, 34, 32];
// 存储所有 18 岁以上年龄的数组
var above18 = [];
// 遍历年龄并过滤所有 18 岁以上的年龄。
for (var i = 0; i < ages.length; i++) {
   if (ages[i] > 18) {
      // 将所有年龄在 18 岁以上的推送到 above18 数组。
      above18.push(ages[i]);
   }
}
// 打印所有 18 岁以上的年龄。
console.log("所有年龄 18 岁以上。");
console.log(above18);

输出

上述代码将产生以下输出 -

所有年龄 18 岁以上。
[ 32, 34, 54, 65, 76, 21, 34, 32 ]

在本教程中,用户学习了如何在 Typescript 中过滤值。在第一个示例中,用户学习了如何使用 filter 方法从数组中过滤值。此外,用户还学习了如何使用 filter 方法根据成员值过滤对象。

最后,我们创建了自定义算法来过滤值,这也代表了如何在 Array 类中实现 filter() 方法。


相关文章