JavaScript 如何实现对象的filter()方法

JavaScript 如何实现对象的filter()方法

在本文中,我们将学习如何在JavaScript中为对象实现filter()方法。在JavaScript中,filter()方法是一个内置的数组方法,不适用于对象。

filter()方法 会输出数组中通过特定测试或满足特定函数的所有元素。filter()方法的返回类型是一个由所有函数回调返回true的元素组成的数组。但是对于对象,我们需要构建一个自定义的filter()方法。

下面是在JavaScript中实现对象的filter()方法的方法:

  • 使用for循环和filter()方法
  • 使用Object.entries()和Object.fromEntries()方法

方法1:使用for循环和filter()方法

示例: 该示例使用filter()方法返回IT部门的员工。

let employees = [
    { name: "Tony Stark", department: "IT" },
    { name: "Peter Parker", department: "Pizza Delivery" },
    { name: "Bruce Wayne", department: "IT" },
    { name: "Clark Kent", department: "Editing" }
];
 
let output = employees.filter(employee => employee.department == "IT");
for (let i = 0; i < output.length; i++) {
    console.log(output[i].name)
};
JavaScript

输出

Tony Stark
Bruce Wayne
JavaScript

方法2:使用 Object.entries() 和 Object.fromEntries() 方法

在此方法中,我们将为过滤对象创建自定义内置函数。

示例:

let employees = [
  { name: "Tony Stark", id: 1, department: "IT" },
  { name: "Peter Parker", id: 2, department: "Pizza Delivery" },
  { name: "Bruce Wayne", id: 3, department: "IT" },
  { name: "Clark Kent", id: 4, department: "Editing" }
];
 
Object.filter = (obj, predicate) =>
  Object.fromEntries(Object.entries(obj).
                     filter(([key, value]) =>
                     predicate(value)));
 
let filtered = 
    Object.filter(employees, employee => 
                  employee.department === "IT");
console.log(filtered);
JavaScript

输出

{
  '0': { name: 'Tony Stark', id: 1, department: 'IT' },
  '2': { name: 'Bruce Wayne', id: 3, department: 'IT' }
}
JavaScript

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册