我浏览过Lodash文档很多,似乎无法找到我正在寻找的内容。
我想知道Lodash是否有方法或简单的方法组合,一旦检测到某个匹配,就会删除数组中的所有剩余元素,包括匹配本身。
例如:
WKWebView
答案 0 :(得分:2)
这可以使用Array对象的indexOf和splice函数来实现。以下是使用Lodash和javascript函数的实现
blogArray.splice(0,blogArray.indexOf(matchingEl))
_.slice(blogArray, 0, _.findIndex(blogArray, function(k){return k == matchingEl;})
答案 1 :(得分:1)
这对我很可爱
_.doAThing(blogArray)
因为它大胆地体现了一种名为一厢情愿的的编程技巧 - 它捕捉到了这样的想法:你的程序就像你想要的一样优雅;制作一根魔杖,在一些参数上挥动它,你的程序就可以了!它确实如此,我们只需要写_.doAThing
...
我们可以使用递归轻松遍历数组。要设计递归函数,我们有一个 base 案例和归纳案例
items
为空,返回空数组items
不为空,因此我们至少有一个元素 - 如果first
项匹配{{1我们已经完成了,没有任何要素可以遵循;返回空数组。'https'
项不匹配,将first
项与项first
的递归结果连接起来。rest
好的,所以这正是我想要表达的const doAThing = (items = []) =>
isEmpty (items)
? []
: first (items) === 'https'
? []
: [ first (items) ] .concat (doAThing (rest (items)))
- 我的想法是我一直保持希望功能。现在我只需要写doAThing
,isEmpty
和first
rest
allakhazam!像魔法一样,你的程序已经完成。请注意,我们可以使用const isEmpty = (items = []) =>
items.length === 0
const first = (items = []) =>
items [0]
const rest = (items = []) =>
items.slice (1)
折叠前两个案例,因为每个案例都返回相同的||
[]
明显的改进是使const doAThing = (items = []) =>
isEmpty (items) || first (items) === 'https'
? []
: [ first (items) ] .concat (doAThing (rest (items)))
const isEmpty = (items = []) =>
items.length === 0
const first = (items = []) =>
items [0]
const rest = (items = []) =>
items.slice (1)
const data =
["check", "out", "my", "blog", "https", "someblog", "com"]
console.log (doAThing (data))
// [ 'check', 'out', 'my', 'blog' ]
匹配函数的参数
https