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

3

我有一个对象数组,想要测试它是否存在具有某个特定值的属性(至少一次出现),并返回布尔值来指示结果。我正在使用Ramda库,并尝试使用has函数来实现这一点,但它只返回实际属性是否存在的布尔值,而不是它对应的值。

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。

感谢您的帮助,非常感谢。


http://ramdajs.com/0.19.1/docs/#find - dandavis
2个回答

12

如果您正在寻找一个Ramda的解决方案,这个应该可以胜任:

R.filter(R.propEq('sport', 'rugby'))(data)

R.has检查对象是否具有指定名称的属性;R.propIs检查属性是否属于给定类型;R.propEq测试属性是否存在并等于给定值,而更通用的R.propSatisfies检查属性值是否与任意谓词匹配。


2
你可以尝试使用这个函数:
function myFind(data, key, value) {
    return data.some(function(obj){
        return key in obj && obj[key] == value;
    });
}

Reference: Array.some()


@dandavis。我看到了一段JavaScript代码... 我应该删除我的回答吗? - user4227915
似乎不清楚Ramda是必需品还是OP尝试过的东西。 - IrkenInvader
公平的,就这样吧,并征求进一步反馈;楼主可能应该表述更清楚。 - dandavis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接