首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ramda.js过滤对象数组

使用ramda.js过滤对象数组
EN

Stack Overflow用户
提问于 2016-09-26 21:21:37
回答 2查看 1.5K关注 0票数 4

我有一个对象数组。我想对其进行过滤,以获得对象,其中任何属性都包含mathing字符串。

如果我的数组是

代码语言:javascript
复制
 var data = [
 {"name: "John",
 "surname": "Smith"},
 {"name": "Peter",
 "surname: "Smithie"}]

I并使用字符串"Smi“进行筛选,则应该同时返回这两个项。如果string为"John",则只有第一个。

这是我的代码:

代码语言:javascript
复制
var filtered = R.filter(R.where({ x: R.contains("Smi")}))(data);

不过,我得到了错误:

代码语言:javascript
复制
Cannot read property 'indexOf' of undefined

有人能帮我解决一下我的Ramda函数吗?一定是我漏掉了一些小东西,我猜。提前感谢

EN

回答 2

Stack Overflow用户

发布于 2016-09-27 02:49:42

你可以这样做:

代码语言:javascript
复制
R.filter(R.pipe(R.values, R.any(R.contains('Smi'))))(data)

不过,这利用了contains的一个未记录的特性,该特性用于处理列表,而不是字符串。但它。

票数 2
EN

Stack Overflow用户

发布于 2016-09-26 22:02:08

我不能在Ramda中回答,但如果你想在JS中实现同样的功能,你可以很容易地这样做:

代码语言:javascript
复制
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"));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39704064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档