chain-able
Version:
interfaces that describe their intentions.
53 lines (48 loc) • 1.1 kB
JavaScript
const isArray = require('../../is/array')
const includes = require('./includes')
/**
* @param {string} needle
* @param {Array<string>} haystack
* @return {boolean}
*/
function strHasAny(needle, haystack) {
if (needle.includes(haystack)) {
return true
}
for (let i = 0, len = haystack.length; i < len; i++) {
if (haystack[i].includes(needle)) {
return true
}
}
return false
}
/**
* @see strHasAny
* @param {Array<string>} needles
* @param {Array<string>} haystack
* @return {boolean}
*/
function arrayHasAny(needles, haystack) {
if (needles.includes(haystack)) {
return true
}
// loop needles
for (let i = 0; i < needles.length; i++) {
if (strHasAny(needles[i], haystack)) {
return true
}
}
return false
}
/**
* @see arrayHasAny
* @see strHasAny
* @param {Array<string> | string} needle
* @param {Array<string>} haystack
* @return {boolean}
*/
function includesAny(needle, haystack) {
if (isArray(needle)) return arrayHasAny(needle, haystack)
else return strHasAny(needle, haystack)
}
module.exports = includesAny