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)
};
输出
Tony Stark
Bruce Wayne
方法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);
输出
{
'0': { name: 'Tony Stark', id: 1, department: 'IT' },
'2': { name: 'Bruce Wayne', id: 3, department: 'IT' }
}