如何通过包含特定字符串的属性筛选JSON数据

How to filter JSON data by properties that contain certain strings?

本文关键字:属性 筛选 JSON 数据 字符串 何通过 包含特      更新时间:2023-09-26

我有一个JSON对象,看起来像这样:

{
  'name': 'Bob',
  'friends': [
    {
      'name' : 'Ashley (Family)'
    },
    {
      'name' : 'Steven (Non-Family)'
    },
    {
      'name' : 'Chris (Family)'
    }
  ]
}

如何过滤以上内容,使其只返回作为家人的朋友?即名字中包含"(家人)"的朋友?

function filterFriends (friends) {
  return friends.filter(function(i) {
    if (i.name.indexOf('(Family)') > -1) {
      return i.name;
    }
  });
}

但以上似乎不起作用。。。我不知道我是否走在正确的轨道上?

除了a)使用毫无意义的短语"JSON对象"和b)

var data = {
  name: 'Bob',
  friends: [
    {
      name: 'Ashley (Family)'
    },
    {
      name: 'Steven (Non-Family)'
    },
    {
      name: 'Chris (Family)'
    }
  ]
};
var family = data.friends.filter(f => f.name.indexOf('(Family)') > -1);
console.log(family);
// [{name: 'Ashley (Family)'}, {name: 'Chris (Family)'}]

如果你想把它写进一个函数

function isFamily(name) {
  return name.indexOf('(Family)') > -1;
}
function getFamily(friends) {
  return friends.filter(f => isFamily(f.name));
}
var family = getFamily(data.friends);

ES5

var family = data.friends.filter(function(f) {
  return f.name.indexOf('(Family)') > -1);
});
console.log(family);

Filter方法应该始终返回布尔值,这看起来就像总是返回带有名称的字符串。

查看文档中的.filter方法:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter