我想要的函数是"或";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>