我有一个对象数组。我想对其进行过滤,以获得对象,其中任何属性都包含mathing字符串。
如果我的数组是
var data = [
{"name: "John",
"surname": "Smith"},
{"name": "Peter",
"surname: "Smithie"}]I并使用字符串"Smi“进行筛选,则应该同时返回这两个项。如果string为"John",则只有第一个。
这是我的代码:
var filtered = R.filter(R.where({ x: R.contains("Smi")}))(data);不过,我得到了错误:
Cannot read property 'indexOf' of undefined有人能帮我解决一下我的Ramda函数吗?一定是我漏掉了一些小东西,我猜。提前感谢
发布于 2016-09-27 02:49:42
你可以这样做:
R.filter(R.pipe(R.values, R.any(R.contains('Smi'))))(data)不过,这利用了contains的一个未记录的特性,该特性用于处理列表,而不是字符串。但它。
发布于 2016-09-26 22:02:08
我不能在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"));
https://stackoverflow.com/questions/39704064
复制相似问题