js的filter

JavaScript中的filter()方法用于创建一个新的数组,其中包含通过测试的所有元素。这个方法不会改变原始数组。filter()方法接受一个回调函数作为参数,该回调函数对数组的每个元素执行测试,并返回一个布尔值,指示该元素是否应该被包含在新数组中。

以下是filter()方法的基本语法:

array.filter(callback(currentValue, index, array), thisArg)
  • array:需要过滤的数组。

  • callback:执行测试的函数,接收三个参数:

  • currentValue:当前正在处理的元素值。

  • index(可选):当前元素的索引。

  • array(可选):调用filter()方法的数组。

  • thisArg(可选):执行callback时使用的this值。

示例

示例 1

const numbers = [1, 2, 3, 4, 5];
const filteredNumbers = numbers.filter(number => number > 3);
console.log(filteredNumbers); // 输出: [4, 5]

示例 2

const students = [
  { name: 'Alice', age: 20, score: 90 },
  { name: 'Bob', age: 22, score: 85 },
  { name: 'Charlie', age: 21, score: 95 }
];

const highScorers = students.filter(student => student.score >= 90);
console.log(highScorers);
// 输出: [
//   { name: 'Alice', age: 20, score: 90 },
//   { name: 'Charlie', age: 21, score: 95 }
// ]

示例 3

const strings = ['A', '', 'B', null, undefined, 'C', ' '];
const trimmedStrings = strings.filter(s => s && s.trim());
console.log(trimmedStrings); // 输出: ['A', 'B', 'C']

建议

  • 使用filter()方法时,确保回调函数返回一个明确的布尔值,以便正确过滤数组元素。

  • 如果需要访问原始数组,可以在filter()方法之前创建数组的副本,以避免修改原始数据。

  • filter()方法不会改变原始数组,这是其与其他数组方法(如map())的一个重要区别。

Top