滤镜箭头功能(ES6)

时间:2018-05-05 03:23:00

标签: javascript filter ecmascript-6

不确定如何使用箭头功能完全使用此.filter()。

说明:

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

尝试过的解决方案:

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

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

4 个答案:

答案 0 :(得分:4)

您可以通过多种方式执行此操作,例如使用in,使用includes()等。但如果我是你,我会用hasOwnProperty

尝试这种方式
  

hasOwnProperty()方法返回一个布尔值,指示是否   object将指定的属性作为自己的属性(而不是   继承它)。

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

var solution = jobs.filter(obj => obj.hasOwnProperty('programmer'));
console.log(solution)

使用in

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

var solution = jobs.filter(obj => 'programmer' in obj);
console.log(solution)

使用includes

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

var solution = jobs.filter(obj => Object.keys(obj).includes('programmer'));
console.log(solution)

答案 1 :(得分:3)

您需要检查对象的(或者,在这种情况下,只需检查单个键),看它是否与'programmer'匹配。

const jobs = [{receptionist: "James"}, 
        {programmer: "Steve"},
        {designer: "Alicia"}];
const match = jobs.find((job) => job.hasOwnProperty('programmer'));
console.log(match);

但这是一个非常奇怪的对象结构。如果可以,请尝试重构代码,使您的对象类似于以下内容,以便更容易迭代:

const jobs = [{
    title: 'receptionist',
    name: "James"
  },
  {
    title: 'programmer',
    name: "Steve"
  },
  {
    title: 'designer',
    name: "Alicia"
  }
];
const match = jobs.find(({title}) => title === 'programmer');
console.log(match);

答案 2 :(得分:2)

filter需要的是一个布尔返回值,它告诉它一个特定的元素满足条件并且应该被过滤掉。

这里,hasOwnProperty确实返回一个布尔值,这将作为filter的箭头函数的返回值。

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

const solution = jobs.filter(person => person.hasOwnProperty("programmer"));

console.log(solution);

请注意,如果箭头函数的正文只有一行,则无需明确使用return关键字。

例如,以下代码等同于上面的代码段。

jobs.filter((person)=>{return person.hasOwnProperty("programmer")})

答案 3 :(得分:-1)

  

var solution = jobs.filter(person => person ===“programmer”);

这与:

相同
var solution = jobs.filter(function(person) {
    return (person === "programmer" ? true : false);
});

person是jobs数组中的元素。现在自己回答:对于您想要的解决方案,以下条件是否正确?

{ title: 'programmer', name: "Steve"} === "programmer"