对象数组过滤问题

Array of objects filter issue

我有以下 JSON 作为数组,我正在尝试过滤角色属性,但我无法过滤结果。请帮助我。

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

我写的JavaScript代码如下:

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

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

您的 data 变量有语法错误。您需要删除包装它的引号。

你的过滤代码也有一点变化。

由此变化:

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

为此:

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

看到它有效:

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);

试试这个,简单的方法

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

并从数据对象中删除"",这是数组对象

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