我的箭头功能出了什么问题?

时间:2017-11-10 19:29:01

标签: javascript arrow-functions

我正在努力解决这个挑战并且无法弄明白。

这是挑战:

使用内置过滤器方法过滤对象的jobs数组,并返回作为程序员的作业对象。确保将箭头功能与过滤方法结合使用。

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

不应该使用for循环。

解决方案中的任何位置都不应包含function关键字。

这是提供的数组:

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

这是我的代码:

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

还提供了var解决方案。

2 个答案:

答案 0 :(得分:4)

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

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

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

这有效:



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

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

console.log(solution);




答案 1 :(得分:0)

filter将对象传递给它的回调(箭头函数)。您需要使用programmer检查该对象是否具有名为hasOwnProperty的属性:



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

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

console.log(result);