在 lodash 或 JS 中是否有"amongst"或等效的函数?



我想要的函数是"或";within"在lodash或JS。相反的已经存在,它叫做"包含"。例子:

_(['a', 42]).includes(42)

我想写

_(42).amongst(['a', 42])

有线索吗?

您的amongst/within函数是_.includes()的一个版本,搜索value第一和collection第二,因此您可以通过翻转_.includes()轻松创建一个:

const amongst = _.flip(_.includes)
console.log(amongst(42, ['a', 42]))
console.log(amongst('b', ['a', 42]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

您可以使用_.mixin()将它添加到lodash:

const amongst = _.flip(_.includes)
_.mixin({ amongst });

console.log(_(42).amongst(['a', 42]))
console.log(_('b').amongst(['a', 42]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

在香草ajs中,你可以创建一个函数做同样的事情:

const amongst = (value, collection) => collection.includes(value)
console.log(amongst(42, ['a', 42]))
console.log(amongst('b', ['a', 42]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

最新更新