我有一个对象数组,我想测试它以确定是否存在具有特定值的属性(至少出现一次),并且它返回一个布尔值来指示结果。我正在使用Ramda库并且已经尝试使用has
函数来尝试实现这一点,但是这只会返回一个关于实际属性是否存在的布尔值而不是它的相应值。 / p>
const data = [
{
id: 10004,
name: 'Daniel',
age: 43,
sport: 'football'
},
{
id: 10005,
name: 'Tom',
age: 23,
sport: 'rugby'
},
{
id: 10006,
name: 'Lewis',
age: 32,
sport: 'football'
},
];
检查sport: 'rugby'
的对象数组应返回true
,而sport: 'tennis'
应返回false。
非常感谢任何帮助,谢谢。
答案 0 :(得分:9)
如果您正在寻找Ramda解决方案,这样做会很好:
R.filter(R.propEq('sport', 'rugby'))(data)
正如您所指出的, R.has
只是检查对象是否具有命名属性。 R.propIs
检查属性是否属于给定类型。 R.propEq
测试属性是否存在并且等于给定值,更通用的R.propSatisfies
检查属性值是否与任意谓词匹配。
答案 1 :(得分:2)
您可以尝试此功能:
function myFind(data, key, value) {
return data.some(function(obj){
return key in obj && obj[key] == value;
});
}
参考:Array.some()