我有一个对象数组。我想过滤它来获取对象,其中任何属性都包含mathing字符串。
如果我的数组是
var data = [
{"name: "John",
"surname": "Smith"},
{"name": "Peter",
"surname: "Smithie"}]
我用字符串“Smi”过滤,它应该返回两个项目。如果string是“John”,则只有第一个。
这是我的代码:
var filtered = R.filter(R.where({ x: R.contains("Smi")}))(data);
我收到了错误:
Cannot read property 'indexOf' of undefined
有人可以帮我解决我的Ramda功能吗?我想,我必须要小的东西。提前致谢
答案 0 :(得分:2)
你可以这样做:
R.filter(R.pipe(R.values, R.any(R.contains('Smi'))))(data)
答案 1 :(得分:1)
我无法在Ramda中回答,但如果您想在JS中实现相同的功能,您可以轻松地执行以下操作;
var data = [{"name": "John", "surname": "Smith"}, {"name": "Peter", "surname": "Smirnof"}],
getObjects = (d,f) => d.filter(o => Object.keys(o).some(k => o[k].includes(f)));
console.log(getObjects(data,"Smi"));
console.log(getObjects(data,"Jo"));