Venkata Krishna
Venkata Krishna

Reputation: 4305

Array of objects filter issue

I have got the following JSON as an array and I am trying to filter on roles attribute but I am not able to filter the results. Please help me.

var data = [{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["CitySupervisor"]},{"roles":["citysupervisor"]},{"roles":["partner"]},{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["clientsupervisor"]}];

The JavaScript code which I wrote is below:

var results = data.filter(function(user) {
  var roles = user.roles;

  return roles.filter(function(role) {
    return role == 'clientsupervisor';
  });
});

Upvotes: 0

Views: 46

Answers (2)

Z-Bone
Z-Bone

Reputation: 1584

Your data variable has a syntax error. You need to remove the quotes that are wrapping it.

Also a little change in your filtering code.

Change from this:

"[{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["CitySupervisor"]},{"roles":["citysupervisor"]},{"roles":["partner"]},{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["clientsupervisor"]}]";

To this:

[{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["CitySupervisor"]},{"roles":["citysupervisor"]},{"roles":["partner"]},{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["clientsupervisor"]}];

See it working:

var data = [{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["CitySupervisor"]},{"roles":["citysupervisor"]},{"roles":["partner"]},{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["clientsupervisor"], "name": "Jack", "profileId": 34533}];

var results = data.filter(function (user){
	return user.roles.indexOf('clientsupervisor') > -1;
});

console.log(results);

Upvotes: 3

Girish
Girish

Reputation: 12117

try this, simple way

var results = data.filter(function(user) {
    return user.roles.indexOf("clientsupervisor") > -1 ? true: false
});

and remove "" from data object, this is array object

var data = [{"roles":["citysupervisor"]},.....];

Upvotes: 0

Related Questions