我的箭头功能有什么问题?

What's wrong with my arrow function?

我正在努力应对这个挑战,但无法弄清楚。

这是挑战:

使用内置的过滤方法过滤对象的作业数组和return 从事程序员工作的人的对象。确保将箭头功能与过滤方法结合使用。

不应在最终解决方案中使用 ES5 函数声明语法。

不应使用 for 循环。

解决方案中的任何地方都不应该有 function 关键字。

这是提供的数组:

var jobs = [{receptionist: "James"}, 
            {programmer: "Steve"},
            {designer: "Alicia"}];

这是我的代码:

var solution = jobs.filter((programmer) => programmer === "Steve");

还提供了var解决方案。

在你传递给filter的函数中,参数是一个对象(因为jobs是一个对象数组),而不是一个字符串。 programmer 将是该对象上的 属性。

另一个问题是,当您应该检查对象 是否具有 一个 programmer 属性 时,您的代码正在检查特定名称 (Steve) .

最后,请记住 filter returns 一个 数组 ,因此您的解决方案将是该数组的第一个元素。

这个有效:

var jobs = [{receptionist: "James"}, 
            {programmer: "Steve"},
            {designer: "Alicia"}];

var solution = jobs.filter((person) => person.programmer)[0];

console.log(solution);

filter 正在将对象传递给它的回调函数(箭头函数)。您需要使用 hasOwnProperty:

检查该对象是否具有名为 programmer 的 属性

var jobs = [{receptionist: "James"}, 
            {programmer: "Steve"},
            {programmer: "Another Steve"},
            {designer: "Alicia"}];

var result = jobs.filter(obj => obj.hasOwnProperty("programmer"));

console.log(result);