ElMuchacho
ElMuchacho

Reputation: 300

Filter arrow function doesn't give a correct output

const arr = [   { name: 'Dan', age: 33, color: 'red' },   { name: 'Mike', age: 21, color: 'blue' },   { name: 'Lance', age: 20, color: 'green' },   { name: 'Layne', age: 21, color: 'blue' },   { name: 'Dan', age: 18, color: 'red' } ];

const getUsersWithEyeColor = list =>
  list.filter((user, colour) => {
    return user.eyeColor.includes(colour);
  });


log(getUsersWithColor(arr, 'blue'));

I want to filter an array of objects dynamically, using an array function, but right now I am getting an empty array.

Upvotes: 2

Views: 45

Answers (1)

mickl
mickl

Reputation: 49985

You function takes two arguments so it should be: (list, colour) =>... and you need to compare the value so .includes() is not needed:

const arr = [   { name: 'Dan', age: 33, color: 'red' },   { name: 'Mike', age: 21, color: 'blue' },   { name: 'Lance', age: 20, color: 'green' },   { name: 'Layne', age: 21, color: 'blue' },   { name: 'Dan', age: 18, color: 'red' } ];

const getUsersWithColor = (list, colour) =>
  list.filter(user => user.color === colour);


console.log(getUsersWithColor(arr, 'blue'));

user represents single element from list

Upvotes: 1

Related Questions