UNPKG

wsemi

Version:

A support package for web developer.

105 lines (96 loc) 2.82 kB
import isEqual from 'lodash/isEqual' import isarr from './isarr.mjs' import iser from './iser.mjs' /** * 判斷任一字串陣列vtar內元素,是否「等於」任一字串陣列vhas內元素 * * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/arrHas.test.mjs Github} * @memberOf wsemi * @param {String|Number|Object|Boolean|Array} vtar 輸入被查找的字串陣列或字串 * @param {String|Number|Object|Boolean|Array} vhas 輸入查找字串陣列或字串 * @returns {Boolean} 回傳判斷布林值 * @example * * console.log(arrHas([1, 2, 3, '4', 5, 'abc'], 2)) * // => true * * console.log(arrHas([1, 2, 3, '4', 5, 'abc'], 6)) * // => false * * console.log(arrHas([1, 2, 3, '4', 5, 'abc'], [2])) * // => true * * console.log(arrHas([1, 2, 3, '4', 5, 'abc'], [6])) * // => false * * console.log(arrHas([1, 2, 3, '4', 5, 'abc'], ['4', 2])) * // => true * * console.log(arrHas([1, 2, 3, '4', 5, 'abc'], ['7', 6])) * // => false * * console.log(arrHas([1, true, 2, 3, '4', true, 5, 'abc'], true)) * // => true * * console.log(arrHas([1, true, 2, 3, '4', true, 5, 'abc'], false)) * // => false * * console.log(arrHas([1, true, 2, 3, '4', true, 5, 'abc'], [true])) * // => true * * console.log(arrHas([1, true, 2, 3, '4', true, 5, 'abc'], [false])) * // => false * * console.log(arrHas([1, 2, { x: 'xyz' }, 3, '4', 5, 'abc'], { x: 'xyz' })) * // => true * * console.log(arrHas([1, 2, { x: 'xyz' }, 3, '4', 5, 'abc'], { x: 'opqr' })) * // => false * * console.log(arrHas([1, 2, { x: 'xyz' }, 3, '4', 5, 'abc'], [{ x: 'xyz' }])) * // => true * * console.log(arrHas([1, 2, { x: 'xyz' }, 3, '4', 5, 'abc'], [{ x: 'opqr' }])) * // => false * * console.log(arrHas([1, 2, { x: 'xyz' }, 3, '4', 5, 'abc'], ['4', { x: 'xyz' }])) * // => true * * console.log(arrHas([1, 2, { x: 'xyz' }, 3, '4', 5, 'abc'], ['7', { x: 'opqr' }])) * // => false * */ function arrHas(vtar, vhas) { function ck(v) { if (isarr(v)) { return v } return [v] } //check vtar, 會自動轉陣列 if (iser(vtar)) { return false } vtar = ck(vtar) if (vtar.length === 0) { return false } //check vhas, 會自動轉陣列 if (iser(vtar)) { return false } vhas = ck(vhas) if (vhas.length === 0) { return false } //由vtar各元素當中,若存在vhas內任一元素則回傳true,反之回傳false for (let i = 0; i < vtar.length; i++) { for (let j = 0; j < vhas.length; j++) { if (isEqual(vtar[i], vhas[j])) { return true } } } return false } export default arrHas