Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript lodash速记表达式中带“或”的过滤器_Javascript_Functional Programming_Underscore.js_Filtering_Lodash - Fatal编程技术网

Javascript lodash速记表达式中带“或”的过滤器

Javascript lodash速记表达式中带“或”的过滤器,javascript,functional-programming,underscore.js,filtering,lodash,Javascript,Functional Programming,Underscore.js,Filtering,Lodash,假设我有一个收藏: var集合=[{type:'a'},{type:'b'},{type:'c'},{type:'d'}] 如何对其进行筛选,以便只保留“a”和“b”类型?我希望做一些类似的事情: _filtercollection,['type','a','b'] 也就是说,使用uu.matcheProperty iteratee速记来处理多个匹配类型,但这种方式不起作用。您知道没有定义自定义函数就可以实现这一点的简单方法吗?您可以使用带有函数的u.filter使其更具功能性,但简单。filt

假设我有一个收藏:

var集合=[{type:'a'},{type:'b'},{type:'c'},{type:'d'}]

如何对其进行筛选,以便只保留“a”和“b”类型?我希望做一些类似的事情:

_filtercollection,['type','a','b']

也就是说,使用uu.matcheProperty iteratee速记来处理多个匹配类型,但这种方式不起作用。您知道没有定义自定义函数就可以实现这一点的简单方法吗?

您可以使用带有函数的u.filter使其更具功能性,但简单。filter也可以满足以下要求:

ES5:

ES6

您可以将u0.filter与函数一起使用,使其更具功能性,但更简单。filter还可以满足以下要求:

ES5:

ES6


很好,把莱巴拉的建议变成一个答案:

假设我有一个:

var集合=[{type:'a'},{type:'b'},{type:'c'},{type:'d'}]

下面将仅筛选出“a”和“b”类型:

_.filtercollection,符合{'type':\部分包含,['a','b']}


这不是最漂亮的代码,但我认为它胜过ES5函数,并展示了0.confirms是如何工作的。正是我要找的

很好,把莱巴拉的建议变成一个答案:

collection.filter(i => ['a', 'b'].includes(i.type)); 
假设我有一个:

var集合=[{type:'a'},{type:'b'},{type:'c'},{type:'d'}]

下面将仅筛选出“a”和“b”类型:

_.filtercollection,符合{'type':\部分包含,['a','b']}



这不是最漂亮的代码,但我认为它胜过ES5函数,并展示了0.confirms是如何工作的。正是我要找的

不创建自己的函数有什么重要的?collection=u.filtercollection,函数e{returne e.type=='a'| | e.type=='b'};完成。使用ES2015更好:collection=.filtercollection,e=>e.type='a'| | e.type==''b';它不是阻滞剂,但我最惊讶的是它没有得到支持,并且做了一些研究,没有发现任何东西,所以我想确认这在lodash中实际上是不可能的。另外,我正在使用更实用的方法来做事情,所以我希望有人能想出一个有趣的方法来使用u属性、u.partial或类似的东西。但你是完全正确的,这可以很容易地用自定义函数完成,甚至在ES6的优雅方式中。你可以考虑使用,类型属性使用[a,'b]作为它的第一个参数。正是我正在寻找的,只是添加了一个你的建议的答案。万分感谢@听起来这是一个很好的答案。不创建自己的函数有什么重要的?collection=u.filtercollection,函数e{returne e.type=='a'| | e.type=='b'};完成。使用ES2015更好:collection=.filtercollection,e=>e.type='a'| | e.type==''b';它不是阻滞剂,但我最惊讶的是它没有得到支持,并且做了一些研究,没有发现任何东西,所以我想确认这在lodash中实际上是不可能的。另外,我正在使用更实用的方法来做事情,所以我希望有人能想出一个有趣的方法来使用u属性、u.partial或类似的东西。但你是完全正确的,这可以很容易地用自定义函数完成,甚至在ES6的优雅方式中。你可以考虑使用,类型属性使用[a,'b]作为它的第一个参数。正是我正在寻找的,只是添加了一个你的建议的答案。万分感谢@听起来这是一个很好的答案。不是最漂亮的代码,但我认为比ES5功能更好。。。嗯……我想是情人眼里出西施。我更愿意看到一个简单的过滤器调用。你可能是对的,但这是一个有趣的难题你说速记表达式和ES5函数之类的东西,好像它们有任何意义…不是最漂亮的代码,但我认为比ES5函数更好。。。嗯……我想是情人眼里出西施。我更愿意看到一个简单的过滤器调用。你可能是对的,但这是一个有趣的难题你说的速记和ES5的功能就好像它们有任何意义一样……谢谢@naomik。我认为当你投票时,你应该问一个原因。我不明白为什么人们在不了解问题/解决方案的情况下否决了投票。我没有否决这一项,但我想它是被否决了,因为我在我的问题中明确排除了这个解决方案:没有定义一个习惯function@user633183我可能知道为什么会投反对票,这有多种原因:1。问题已标记为lodash,此答案不使用lodash的过滤器。2.Lodash主要用于跨浏览器兼容性。过滤器与IE11不兼容。3.OP在评论中表示,他想确认在lodash中是否可以使用or进行过滤。我喜欢这个答案,但在这方面,我们应该根据问题提供的上下文提供好的答案,否则,它可能无法满足OP的需要。谢谢@naomik。我认为当你投票时,你应该问一个原因。我
collection.filter(i => ['a', 'b'].includes(i.type)); 

我不明白为什么人们在不了解问题/解决方案的情况下否决了投票。我没有否决这一项,但我想它是被否决了,因为我在我的问题中明确排除了这个解决方案:没有定义一个习惯function@user633183我可能知道为什么会投反对票,这有多种原因:1。问题已标记为lodash,此答案不使用lodash的过滤器。2.Lodash主要用于跨浏览器兼容性。过滤器与IE11不兼容。3.OP在评论中表示,他想确认在lodash中是否可以使用or进行过滤。我喜欢这个答案,但在这样的情况下,我们应该根据问题提供的上下文提供好的答案,否则,它可能无法满足OP的需要。
collection.filter(i => ['a', 'b'].includes(i.type));