/**
* 加法函数,用来得到精确的加法结果
* javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
*
* @param {number} arg1
* @param {number} arg2
* @returns {number} arg1加上arg2的精确结果
* @example
*
* accAdd(0.1, 0.2)
* // => 0.3
*/
export declare function accAdd(arg1: number, arg2: number): number;
/**
* 除法函数,用来得到精确的除法结果
* javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
*
* @param {number} arg1
* @param {number} arg2
* @returns {number} arg1除以arg2的精确结果
* @example
*
* accDiv(0.2, 0.3)
* // => 0.6666666666666666
*/
export declare function accDiv(arg1: number, arg2: number): number;
/**
* 乘法函数,用来得到精确的乘法结果
* javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
*
* @param {number} arg1
* @param {number} arg2
* @returns {number} arg1乘以arg2的精确结果
* @example
*
* accMul(0.222, 0.3333)
* // => 0.0739926
*/
export declare function accMul(arg1: number, arg2: number): number;
/**
* 减法函数,用来得到精确的减法结果
* javascript的减法结果会有误差,在两个浮点数相减的时候会比较明显。这个函数返回较为精确的减法结果。
*
* @param {number} arg1
* @param {number} arg2
* @returns {number} arg1减去arg2的精确结果
* @example
*
* accSub(0.3, 0.2)
* // => 0.1
*/
export declare function accSub(arg1: number, arg2: number): number;
/**
* 为数字加上单位:万或亿
*
* @param {number} number 输入数字.
* @param {number} decimalDigit 返回的小数点后最多的位数,默认为 2
* @return {string} 加上单位后的数字(计算结果有时会有精度问题)
* @example
*
* addChineseUnit(1000.01)
* // => 1000.01
*
* addChineseUnit(10000)
* // => 1万
*
* addChineseUnit(99000)
* // => 9.9万
*
* addChineseUnit(566000)
* // => 56.6万
*
* addChineseUnit(5660000)
* // => 566万
*
* addChineseUnit(44440000)
* // => 4444万
*
* addChineseUnit(11111000)
* // => 1111.1万
*
* addChineseUnit(444400000)
* // => 4.44亿
*
* addChineseUnit(400000000000000000000000)
* // => 3999.99万亿亿
*
* addChineseUnit(4000000000000000000000000)
* // => 4亿亿亿
*/
export declare function addChineseUnit(number: number, decimalDigit: number): string;
/**
* dom操作,元素添加某个class
*
* @since 1.1.5
* @param el HTML元素
* @param cls css类名
* @example
*
*
* addClass(document.querySelector('.box'), 'flex1');
* // =>
*/
export declare function addClass(el: HTMLElement, cls: string): void;
/**
* Anagrams of string(带有重复项)
* 使用递归。对于给定字符串中的每个字母,为字母创建字谜。使用map()将字母与每部分字谜组合,然后使用reduce()将所有字谜组合到一个数组中,最基本情况是字符串长度等于2或1。
*
* @since 1.2.1
* @param str
* @returns {*}
* @example
*
* anagrams('abc');
* // => ['abc','acb','bac','bca','cab','cba']
*/
export declare function anagrams(str: string): Array;
/**
* 识别股票代码添加市场后缀
*
* @param {string} stock 股票代码
* @returns {string}
* @example
*
* appendStockSuffix('600570')
* // => '600570.SS'
*/
export declare function appendStockSuffix(stock: string): string;
/**
* 将字节转换成友好格式,如Bytes,KB,MB
*
* @param {string} bytes
* @returns {*}
* @example
*
* bytesToSize(10000)
* // => 9.8 KB
*/
export declare function bytesToSize(bytes: string): string;
/**
* 大写每个单词的首字母
*
* @since 1.2.1
* @param str
* @returns {string|*|void|XML}
* @example
*
* capitalizeEveryWord('hello world!');
* // => 'Hello World!'
*/
export declare function capitalizeEveryWord(str: string): string;
/**
* 数字金额大写转换
*
* @since 1.2.5
* @param n
* @returns {string}
* @example
*
* changeMoneyToChinese(100111);
* => "壹拾万零壹佰壹拾壹元整"
*
* changeMoneyToChinese(7.52);
* => "柒元伍角贰分"
*
* changeMoneyToChinese(951434677682.00);
* => "玖仟伍佰壹拾肆亿叁仟肆佰陆拾柒万柒仟陆佰捌拾贰元整"
*/
export declare function changeMoneyToChinese(n: number): string;
/**
* 版本比较
*
* {@link https://github.com/omichelsen/compare-versions}
* @param v1 老版本
* @param v2 新版本
* @returns {number} v1 > v2 => 1, v1 < v2 => -1, v1 === v2 => 0
* @example
*
* compareVersion('10.1.8', '10.0.4');
* // => 1
* compareVersion('10.0.1', '10.0.1');
* // => 0
* compareVersion('10.1.1', '10.2.2');
* // => -1
*/
export declare function compareVersion(v1: string, v2: string): boolean;
/**
* base64转blob
*
* @param {string} dataURL
* @returns {*}
* @example
*
* const URI = 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48ZGVmcz48c3R5bGUvPjwvZGVmcz48cGF0aCBkPSJNOTU5LjQzNiAyNDMuNUwzNzcuNDEzIDg3MC4yNyA2NC4wMiA0NjcuMzQ0bDExNC43MjctOTcuOTMgMTk4LjY2NiAyMDcuMDYgNDkyLjQ4Mi00MjIuNTEgODkuNTQgODkuNTM3em0wIDAiIGZpbGw9IiM0M2E5ZjEiLz48L3N2Zz4=';
*
* dataURLToBlob(URI);
* // => Blob {size: 248, type: "image/svg+xml"}
*/
export declare function dataURLToBlob(dataURL: string): any;
/**
* 深层克隆对象
*
* @param obj {object}
* @returns {*}
* @example
*
* const a = { foo: 'bar', obj: { a: 1, b: 2 } };
* const b = deepClone(a);
* // => a !== b, a.obj !== b.obj
*/
export declare function deepClone(obj: object): any;
/**
* 深层映射对象键
*
* @param obj
* @param fn
* @returns {{}}
* @example
*
* const obj = {
foo: '1',
nested: {
child: {
withArray: [
{
grandChild: ['hello']
}
]
}
}
};
const upperKeysObj = deepMapKeys(obj, key => key.toUpperCase());
// =>
{
"FOO":"1",
"NESTED":{
"CHILD":{
"WITHARRAY":[
{
"GRANDCHILD":[ 'hello' ]
}
]
}
}
}
*/
export declare function deepMapKeys(obj: object | Array, fn: () => any): any;
/**
* 基于给定的键返回嵌套JSON对象中的目标值
*
* {@link https://30secondsofcode.org/object#dig}
* @param obj
* @param target
* @returns {any}
* @example
*
* const data = {
* level1: {
* level2: {
* level3: 'some data'
* }
* }
* };
* dig(data, 'level3');
* // => 'some data'
* dig(data, 'level4');
* // => undefined
*/
export declare function dig(obj: object, target: object): object;
/**
* 加密算法
* 1.所有入参加入集合M,参数名做key, 值做value
* 2.提供的密钥1(字段名appid)与密钥2(字段名secret)两项,以及当前时间戳(字段名time)也加入集合M,
* 3.将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序)
* 4.集合M所有值拼接成字符串,转化成UTF-8编码格式的字节数组, 最后需要取MD5码(signature摘要值)
*
* @param {object} params
* @example
*
* const params = { mobile: '15858264900', nickname: 'liwb', appkey: 'ertfgdf345435568123454rtoiko5=' };
*
* md5(encrypt(params).toUpperCase());
* // => md5('APPKEY=ERTFGDF34543545=&MOBILE=15858264903&NICKNAME=LIWB')
*/
export declare function encrypt(params: object): string;
/**
* 将from所有的键值对都添加到to上面去,返回to
*
* @param {Object} to
* @param {Object} from
* @returns {*}
* @example
*
* const from = {mobile: '15858264903', nickname: 'liwb'};
* const to = {nickname: 'cklwb'};
*
* extend(to, from);
* // => {nickname: "liwb", mobile: "15858264903"}
*/
export declare function extend(to: object, from: object): object;
/**
* 斐波那契数组生成器
* 创建一个特定长度的空数组,初始化前两个值(0和1)。使用Array.reduce()向数组中添加值,后面的一个数等于前面两个数相加之和(前两个除外)。
*
* @since 1.2.1
* @param num
* @returns {*}
* @example
*
* fibonacci(5);
* // => [0,1,1,2,3]
*/
export declare function fibonacci(num: number): Array;
/**
* 格式化银行卡
* 用户在输入银行卡号时,需要以4位4位的形式显示,就是每隔4位加个空格,方便用户校对输入的银行卡是否正确
* **注:**一般数据库里面存的都是不带格式的原始数据,所以提交的时候记得过滤下空格再提交哦。毕竟格式化这种算是表现层,前端展示的时候处理下就好,业务逻辑什么用到的卡号可不是格式化后的呢。
* 还原`val.replace(/\s/g, '');`
*
* @param {string} val
* @returns {*}
* @example
*
* formatBankCard('6225365271562822');
* // => 6225 3652 7156 2822
*/
export declare function formatBankCard(val: string): string;
/**
* Date 转化为指定格式的String
* 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q)可以用 1-2 个占位符
* 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
*
* @param {string | number} date string支持形式:20160126 12:00:00,2016-01-26 12:00:00,2016.01.26 12:00:00,20160126,2016-01-26 12:00:00.0
* @param {string} fmt
* @returns {string}
* @example
*
* formatDate(Date.now(), 'yyyy-MM-dd hh:mm:ss.S');
* // => 2006-07-02 08:09:04.423
*
* formatDate(Date.now(), 'yyyy-MM-dd E HH:mm:ss');
* // => 2009-03-10 二 20:09:04
*
* formatDate(Date.now(), 'yyyy-MM-dd EE hh:mm:ss');
* // => 2009-03-10 周二 08:09:04
*
* formatDate(Date.now(), 'yyyy-MM-dd EEE hh:mm:ss');
* // => 2009-03-10 星期二 08:09:04
*
* formatDate(Date.now(), 'yyyy-M-d h:m:s.S')
* // => 2006-7-2 8:9:4.18
*/
export declare function formatDate(date: any, fmt?: string): string;
/**
* 用符号(默认为逗号)格式化金钱
*
* @param {string} val
* @param {string} symbol 默认`,`
* @returns {string|*|XML|void}
* @example
*
* formatMoney('1234567890');
* // => 1,234,567,890
*/
export declare function formatMoney(val: string, symbol: string): string;
/**
* 格式化数字、金额、千分位、保留几位小数、舍入舍去
*
* @since 1.0.7
* @param number 要格式化的数字
* @param decimals 保留几位小数
* @param decPoint 小数点符号
* @param thousandsSep 千分位符号
* @param roundTag 舍入参数,默认 'ceil' 向上取,'floor'向下取,'round' 四舍五入
* @returns {XML|void|*|string}
* @example
*
* formatNumber(2, 2, '.', ',');
* // => 2.00
*/
export declare function formatNumber(number: number, decimals?: number, decPoint?: string, thousandsSep?: string, roundTag?: 'ceil' | 'floor' | 'round'): number;
/**
* 手机号码中间部分替换成指定符号
*
* @param {string} phone
* @param {string} symbol 默认为`*`
* @returns {string|*|XML|void}
* @example
*
* formatPhone('15858264903');
* // => 158****4903
*/
export declare function formatPhone(phone: string, symbol: string): string;
/**
* 将时间转化为几天前,几小时前,几分钟前
*
* @param {number} ms
* @returns {*}
* @example
*
* formatTimeAgo(1505232000000);
* // => 1天前
*/
export declare function formatTimeAgo(ms: number): string;
/**
* 生成guid
*
* @returns {string}
* @example
*
* generateGUID();
* // => 1e508ed6-6177-498d-c2a3-467f546db6ab
*/
export declare function generateGUID(): string;
/**
* 从对象中检索给定选择器指示的一组属性
*
* {@link https://30secondsofcode.org/object#get}
* @param from
* @param selectors
* @returns {string[]}
* @example
*
* const obj = { selector: { to: { val: 'val to select' } }, target: [1, 2, { a: 'test' }] };
* get(obj, 'selector.to.val', 'target[0]', 'target[2].a');
* // => ['val to select', 1, 'test']
*/
export declare function get(from: object, selectors: object): Array;
/**
* 获取浏览器的类型和版本号
*
* @returns {{type: string, version: string}}
* @example
*
* getBrowser();
* // => {type: "chrome", version: "60.0.3112.101"}
*/
export declare function getBrowser(): object;
/**
* 获取某个日期是当年中的第几天
*
* @since 1.2.4
* @param time
* @returns {number}
* @example
*
* getDayOfYear('2014-01-10')
* => 10
*/
export declare function getDayOfYear(time: string): number;
/**
* 获取某个日期在这一年的第几周
*
* @since 1.2.4
* @param time
* @returns {number}
* @example
*
* getDayOfYearWeek('2014-01-10')
* => 2
*/
export declare function getDayOfYearWeek(time: string): number;
/**
* 返回指定长度的天数集合
* 摘自:https://segmentfault.com/a/1190000013041329
*
* @param time
* @param len
* @param direction
* @return {Array} 数组
* @example
*
* getDays('2018-1-29', 6, 1)
* // => ["2018-1-26", "2018-1-27", "2018-1-28", "2018-1-29", "2018-1-30", "2018-1-31", "2018-2-1"]
*/
export declare function getDays(time: string, len: number, direction: number): Array;
interface IDeviceInfo {
androidChrome: boolean,
ipad: boolean,
iphone: boolean,
android: boolean,
ios: boolean,
os: 'ios' | 'android',
osVersion: string,
webView: null
}
/**
* 获取移动设备信息,如是否是iOS,android等
*
* @returns {{}}
* @example
*
* getDevice();
* // => {"androidChrome":false,"ipad":false,"iphone":true,"android":false,"ios":true,"os":"ios","osVersion":"9.1","webView":null}
*/
export declare function getDevice(): IDeviceInfo;
/**
* 得到两个时间的时间差(返回天数)
*
* @since 1.0.7
* @param {number} startDay 开始时间戳
* @param {number} endDay 结束时间戳
* @returns {number}
* @example
*
* getDiffDay(1501516800000, 1504195200000);
* // => 31
*/
export declare function getDiffDay(startDay: number, endDay: number): number;
/**
* 主动防御
* 对于我们操作的数据,尤其是由 API 接口返回的,时常会有一个很复杂的深层嵌套的数据结构。为了代码的健壮性,很多时候需要对每一层访问都作空值判断,就像这样:
props.user &&
props.user.posts &&
props.user.posts[0] &&
props.user.posts[0].comments &&
props.user.posts[0].comments[0]
代码看起来相当不美观,因此提供了一个非常简洁明了的原生的方式。
*
* @param p 属性列表
* @param o 对象
* @returns {*} 如果正常访问到,则返回对应的值,否则返回 null。
* @example
*
* var props = {
* user: {
* post: [{
* comments: 'test'
* }]
* }
* };
* getIn(['user', 'post', 0, 'comments'], props);
* // => test
*/
export declare function getIn(p: Array, o: any): number | string;
/**
* 获取location.href参数
*
* @param {string} name
* @returns {*}
* @example
*
* window.location.href = 'http://www.baidu.com/?a=1&b=2';
*
* getLocationHrefParam('a');
* // => 1
*/
export declare function getLocationHrefParam(name: string): string;
/**
* 获取location.search的参数
*
* @param {string} name
* @returns {*}
* @example
*
* window.location.href = 'http://www.baidu.com/?a=1&b=2';
*
* getLocationSearchParam('a');
* // => 1
*/
export declare function getLocationSearchParam(name: string): string;
/**
* 获取某月有多少天
* 摘自:https://segmentfault.com/a/1190000013041329
*
* @param time
* @return {number} 天数
* @example
*
* getMonthOfDay('2018-1-29')
* // => 31
*/
export declare function getMonthOfDay(time: string): number;
/**
* 返回指定长度的月份集合
* 摘自:https://segmentfault.com/a/1190000013041329
*
* @param time
* @param len
* @param direction
* @return {Array} 数组
* @example
*
* getMonths('2018-1-29', 6, 1)
* // => ["2018-1", "2017-12", "2017-11", "2017-10", "2017-9", "2017-8", "2017-7"]
*/
export declare function getMonths(time: string, len: number, direction: number): Array;
/**
* 获取设备像素比
*
* @returns {number}
* @example
*
* // window.navigator.appVersion(5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1)
* getPixelRatio();
* // => 2
*/
export declare function getPixelRatio(): number;
/**
* 获取滚动位置
* 如果已定义,请使用pageXOffset和pageYOffset,否则使用scrollLeft和scrollTop,可以省略el来使用window的默认值。
*
* @since 1.2.1
* @param el
* @returns {{x: Number, y: Number}}
* @example
*
* getScrollPos();
* // => {x: 0, y: 200}
*/
export declare function getScrollPos(el: HTMLElement): any;
/**
* 根据参数获取对应的值
*
* @param {string} name
* @returns {*}
* @example
*
* // window.location.href: 'http://www.baidu.com/?a=1&b=2&state=broker:aaaa1111ccc;tenant:asdfasdf;view_tag:2;
* getUrlNames('state');
* // => {broker: "aaaa1111ccc", tenant: "asdfasdf", view_tag: "2"}
*/
export declare function getUrlNames(name: string): any;
/**
* 获取网址参数
* @param {string} url
* @returns {{}} 返回包含当前URL参数的对象。
* @example
*
* getURLParameters('http://url.com/page?name=Adam&surname=Smith');
* => // {name: 'Adam', surname: 'Smith'}
*/
export declare function getURLParameters(url: string): any;
/**
* 获取某年有多少天
*
* @since 1.2.4
* @param time
* @returns {number}
* @example
*
* getYearOfDay('2014')
* => 365
*/
export declare function getYearOfDay(time: string): number;
/**
* Dom 操作,元素是包含某个 class
*
* @since 1.1.5
* @param el HTML元素
* @param cls css类名
* @returns {boolean}
* @example
*
*
* hasClass(document.querySelector('.box'), 'flex');
* // => true
*/
export declare function hasClass(el: HTMLElement, cls: string): boolean;
/**
* Hex 转换为 Rgb
*
* @since 1.2.0
* @param hex
* @returns {*}
* @example
*
* hexToRgb("#0033ff").g;
* // => 51
*/
export declare function hexToRgb(hex: string): any;
/**
* html字符解码
*
* @param {string} str
* @returns {string}
* @example
*
* htmlDecode('<script>');
* // =>