测试值是否存在于对象数组中

时间:2016-03-16 21:43:37

标签: javascript arrays ramda.js

我有一个对象数组,我想测试它以确定是否存在具有特定值的属性(至少出现一次),并且它返回一个布尔值来指示结果。我正在使用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。

非常感谢任何帮助,谢谢。

2 个答案:

答案 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()