我有一个看起来像这样的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;
}
});
}
但上述情况似乎无效......我不知道自己是否走在正确的轨道上?
答案 0 :(得分:0)
Filter方法应始终返回boolean值,这看起来总是返回名称为。
的字符串查看.filter方法的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
答案 1 :(得分:0)
除了 a)使用短语" JSON Object"没有任何意义,而且 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);