t-comm
Version:
专业、稳定、纯粹的工具库
178 lines (175 loc) • 4.11 kB
JavaScript
import _typeof from '@babel/runtime/helpers/typeof';
/**
* 判断数据是不是正则对象
* @param {any} value - 输入数据
* @returns {boolean} 是否是正则对象
*
* @example
*
* isRegExp(1)
*
* // => false
*
* isRegExp(/\d/)
*
* // => true
*/
function isRegExp(value) {
return Object.prototype.toString.call(value) === '[object RegExp]';
}
/**
* 判断数据是不是时间对象
* @param {any} value - 输入数据
* @returns {boolean} 是否是时间对象
*
* @example
*
* isDate(1)
*
* // => false
*
* isDate(new Date())
*
* // => true
*/
function isDate(value) {
return Object.prototype.toString.call(value) === '[object Date]';
}
/**
* 判断数据是不是函数
* @param {any} value - 输入数据
* @returns {boolean} 是否是函数
*
* @example
*
* isFunction(1)
*
* // => false
*
* isFunction(()=>{})
*
* // => true
*/
function isFunction(value) {
// typeof val === 'function' // 也可以
return Object.prototype.toString.call(value) === '[object Function]';
}
/**
* 判断数据是否为普通对象
* 排除 null 和数组,只返回纯对象
* @param val - 输入数据
* @returns 是否为普通对象
* @example
* ```ts
* isPlainObject({}); // true
* isPlainObject([]); // false
* isPlainObject(null); // false
* ```
*/
function isPlainObject(val) {
return val !== null && _typeof(val) === 'object' && !Array.isArray(val);
}
/**
* 判断数据是否为 Promise 对象
* 检查对象是否有 then 和 catch 方法
* @param val - 输入数据
* @returns 是否为 Promise 对象
* @example
* ```ts
* isPromise(Promise.resolve()); // true
* isPromise({}); // false
* ```
*/
function isPromise(val) {
return isPlainObject(val) && isFunction(val.then) && isFunction(val["catch"]);
}
/**
* 判断值是否已定义(不为 undefined 和 null)
* @param value - 输入数据
* @returns 是否已定义
* @example
* ```ts
* isDef(0); // true
* isDef(''); // true
* isDef(null); // false
* isDef(undefined); // false
* ```
*/
function isDef(value) {
return value !== undefined && value !== null;
}
/**
* 判断是否为对象或函数
* @param x - 输入数据
* @returns 是否为对象或函数
* @example
* ```ts
* isObj({}); // true
* isObj(() => {}); // true
* isObj(null); // false
* ```
*/
function isObj(x) {
var type = _typeof(x);
return x !== null && (type === 'object' || type === 'function');
}
/**
* 判断是否为对象类型
* @param val - 输入数据
* @returns 是否为对象
* @example
* ```ts
* isObject({}); // true
* isObject([]); // true
* isObject(null); // false
* ```
*/
function isObject(val) {
return val !== null && _typeof(val) === 'object';
}
var IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i;
var VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv)/i;
/**
* 判断 URL 是否为图片地址
* 根据文件扩展名判断(jpeg、jpg、gif、png、svg、webp、jfif、bmp、dpg)
* @param url - URL 地址
* @returns 是否为图片 URL
* @example
* ```ts
* isImageUrl('https://example.com/image.jpg'); // true
* isImageUrl('https://example.com/video.mp4'); // false
* ```
*/
function isImageUrl(url) {
return IMAGE_REGEXP.test(url);
}
/**
* 判断 URL 是否为视频地址
* 根据文件扩展名判断(mp4、mpg、mpeg、dat、asf、avi、rm、rmvb、mov、wmv、flv、mkv)
* @param url - URL 地址
* @returns 是否为视频 URL
* @example
* ```ts
* isVideoUrl('https://example.com/video.mp4'); // true
* isVideoUrl('https://example.com/image.jpg'); // false
* ```
*/
function isVideoUrl(url) {
return VIDEO_REGEXP.test(url);
}
/**
* 判断字符串是否为数字格式
* 支持整数和小数
* @param value - 输入值
* @returns 是否为数字格式
* @example
* ```ts
* isNumber('123'); // true
* isNumber('123.45'); // true
* isNumber('abc'); // false
* ```
*/
function isNumber(value) {
return /^\d+(\.\d+)?$/.test(value);
}
export { isDate, isDef, isFunction, isImageUrl, isNumber, isObj, isObject, isPlainObject, isPromise, isRegExp, isVideoUrl };