util-helpers 4.10.3 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/divide.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import { strip, digitLength, float2Fixed, checkBoundary } from './utils/math.util';
2
+ import { strip, digitLength, float2Fixed, checkBoundary, isEffectiveNumeric } from './utils/math.util';
3
3
  import times from './times';
4
- import { isNumber, isNaN, isString } from './utils/type';
5
4
  /**
6
5
  * 精确除法,支持多个数相除
7
6
  *
@@ -33,12 +32,13 @@ function divide() {
33
32
 
34
33
  if (rest.length > 0) {
35
34
  return divide.apply(void 0, [divide(num1, num2)].concat(_toConsumableArray(rest)));
36
- } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
35
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
37
36
 
38
37
 
39
- if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {
40
- // @ts-ignore
41
- return num1;
38
+ if (!isEffectiveNumeric(num1)) {
39
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
40
+ } else if (!isEffectiveNumeric(num2)) {
41
+ return Number(num1);
42
42
  }
43
43
 
44
44
  var num1Changed = float2Fixed(num1);
@@ -2,7 +2,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import { checkBoundary, scientificToNumber, isScientificNumber } from './utils/math.util';
3
3
  import isNaN from './utils/type/isNaN';
4
4
  import { trimLeftZero } from './utils/math.util';
5
- import { config } from './utils/config';
5
+ import devWarn from './utils/devWarn';
6
6
  var reg = /^[+-]?\d*\.?\d*$/;
7
7
  /**
8
8
  * 检查数字或数字字符串
@@ -14,10 +14,7 @@ var reg = /^[+-]?\d*\.?\d*$/;
14
14
 
15
15
  function checkNumber(num) {
16
16
  if (!(reg.test(num) || isScientificNumber(num)) || isNaN(num) || typeof num !== 'number' && typeof num !== 'string' || num === '') {
17
- if (!config.disableWarning) {
18
- console.warn("".concat(num, " invalid parameter."));
19
- }
20
-
17
+ devWarn("".concat(num, " invalid parameter."));
21
18
  return false;
22
19
  } // 数字超限如果不是是字符串,可能有异常
23
20
  // 如 1111111111111111111111 // => 1.1111111111111111e+21
@@ -153,12 +150,12 @@ var formatMoney = function formatMoney(num) {
153
150
  thousand = typeof thousand === 'string' ? thousand : ',';
154
151
  decimal = typeof decimal === 'string' ? decimal : '.'; // 转换数字字符串,支持科学记数法
155
152
 
156
- var numStr = scientificToNumber(num) + ''; // 整数和小数部分
153
+ var strNum = scientificToNumber(num) + ''; // 整数和小数部分
157
154
 
158
- var _numStr$split = numStr.split('.'),
159
- _numStr$split2 = _slicedToArray(_numStr$split, 2),
160
- intStr = _numStr$split2[0],
161
- decStr = _numStr$split2[1];
155
+ var _strNum$split = strNum.split('.'),
156
+ _strNum$split2 = _slicedToArray(_strNum$split, 2),
157
+ intStr = _strNum$split2[0],
158
+ decStr = _strNum$split2[1];
162
159
 
163
160
  return symbol + formatInt(intStr, thousand) + formatDec(decStr, precision, decimal);
164
161
  };
package/esm/index.js CHANGED
@@ -53,6 +53,38 @@ export { default as padZero } from './padZero';
53
53
  * @since 3.1.0
54
54
  * @see 参考 {@link https://github.com/camsong/blog/issues/9|JavaScript 浮点数陷阱及解法}
55
55
  * @see 参考 {@link https://2zbuy.csb.app/|JS浮点数计算测试}
56
+ * @example
57
+ * // 从 4.12.0 版本开始,规范了有效数值参数校验。有效数值即数字或字符串类型,能通过 Number(value) 转为数字,且不为 NaN 、空字符串、空格字符串。
58
+ *
59
+ * // 以下为有效数值:
60
+ * // 1. 数字: 1, -1, 1e-2, 1.312, 0.1, Infinity
61
+ * // 2. 数字字符串: '1', '10e2', '-1', '0.1'
62
+ *
63
+ * // 以下为无效数值:
64
+ * // 1. 非数字的字符串: '', ' ', '1a', '-12a', '10.2.2', '10e2.1'
65
+ * // 2. 其他类型值: undefined, null, true, false, [], {}, new Date(), ...
66
+ *
67
+ * // *注意:Number('') 、 Number(' ') 、 Number(new Date) 、 Number(true)等等是可以返回数字,但都不是有效数值。因为它们分别是空字符串、空格字符串和非数字或字符串类型。
68
+ *
69
+ *
70
+ * // 计算说明:
71
+ * // 1. 全部参数都是无效数值将返回 NaN 。
72
+ * plus(); // NaN
73
+ * plus(new Date()); // NaN
74
+ * plus(true, null); // NaN
75
+ *
76
+ * // 2. 参数中包含有效数值和无效数值,将忽略无效数值。
77
+ * plus(0.1); // 0.1
78
+ * plus('0.1', ' ', true, ); // 0.1
79
+ * plus(true, 0.1); // 0.1
80
+ * plus(true, 0.1, 0.2); // 0.3
81
+ * plus('', 0.1, ' ', new Date(), 0.2); // 0.3
82
+ * plus(0.1, true, 0.2, null); // 0.3
83
+ *
84
+ * // 3. 数字和数字字符串将正常的使用安全计算
85
+ * plus(0.1, 0.2); // 0.3
86
+ * plus(0.1, 0.2, 0.3); // 0.6
87
+ *
56
88
  */
57
89
 
58
90
  export { default as plus } from './plus';
@@ -24,8 +24,8 @@ function sumCheckCode(preCode) {
24
24
  } // 反模10计算
25
25
 
26
26
 
27
- if (pj === 10 || pj === 1) {
28
- retNum = 1;
27
+ if (pj === 1) {
28
+ retNum = 0;
29
29
  } else {
30
30
  retNum = 11 - pj;
31
31
  }
package/esm/isChinese.js CHANGED
@@ -18,14 +18,12 @@ var chineseDictionary = {
18
18
  chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]"
19
19
  };
20
20
  var looseChineseRegExp = chineseDictionary.chineseBasic + '+';
21
- var chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$'; // eslint-disable-next-line no-prototype-builtins
21
+ var chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';
22
+ var chineseWithExtend = '(?:' + chineseDictionary.chineseBasic + '|' + chineseDictionary.chineseExtend + '|' + chineseDictionary.chineseExtendA + '|' + chineseDictionary.chineseExtendB + '|' + chineseDictionary.chineseExtendC + '|' + chineseDictionary.chineseExtendD + '|' + chineseDictionary.chineseExtendE + '|' + chineseDictionary.chineseExtendF + ')';
23
+ var looseChineseExtendRegExp = chineseWithExtend + '+';
24
+ var chineseExtendRegExp = '^' + chineseWithExtend + '+$'; // eslint-disable-next-line no-prototype-builtins
22
25
 
23
26
  var supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
24
-
25
- if (supportRegExpUnicode) {
26
- looseChineseRegExp = '(?:' + chineseDictionary.chineseBasic + '|' + chineseDictionary.chineseExtend + '|' + chineseDictionary.chineseExtendA + '|' + chineseDictionary.chineseExtendB + '|' + chineseDictionary.chineseExtendC + '|' + chineseDictionary.chineseExtendD + '|' + chineseDictionary.chineseExtendE + '|' + chineseDictionary.chineseExtendF + ')+';
27
- chineseRegExp = '^(?:' + chineseDictionary.chineseBasic + '|' + chineseDictionary.chineseExtend + '|' + chineseDictionary.chineseExtendA + '|' + chineseDictionary.chineseExtendB + '|' + chineseDictionary.chineseExtendC + '|' + chineseDictionary.chineseExtendD + '|' + chineseDictionary.chineseExtendE + '|' + chineseDictionary.chineseExtendF + ')+$';
28
- }
29
27
  /**
30
28
  * 检测值是否为中文
31
29
  *
@@ -36,6 +34,7 @@ if (supportRegExpUnicode) {
36
34
  * @param {*} value 要检测的值
37
35
  * @param {Object} [options] 配置项
38
36
  * @param {boolean} [options.loose=false] 宽松模式。如果为true,只要包含中文即为true
37
+ * @param {boolean} [options.useExtend=false] 使用统一表意文字扩展A-F。注意:如果不支持 `RegExp.prototype.unicode`,扩展字符集将自动不生效,如IE浏览器。
39
38
  * @returns {boolean} 值是否为中文
40
39
  * @example
41
40
  *
@@ -46,22 +45,36 @@ if (supportRegExpUnicode) {
46
45
  * // => false
47
46
  *
48
47
  * // 宽松模式,只要包含中文即为true
49
- * isChinese('林A', {loose: true});
48
+ * isChinese('林A', { loose: true });
50
49
  * // => true
51
50
  *
52
- * isChinese('A林A', {loose: true});
51
+ * isChinese('A林A', { loose: true });
53
52
  * // => true
54
53
  *
54
+ * isChinese('𠮷');
55
+ * // => false
56
+ *
57
+ * // 使用中文扩展字符集,需要浏览器支持 RegExp.prototype.unicode 才生效。
58
+ * isChinese('𠮷', { useExtend: true });
59
+ * // => true
60
+ * isChinese('𠮷aa', { useExtend: true, loose: true });
61
+ * // => true
55
62
  */
56
63
 
57
-
58
64
  function isChinese(value) {
59
65
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
60
66
  _ref$loose = _ref.loose,
61
- loose = _ref$loose === void 0 ? false : _ref$loose;
67
+ loose = _ref$loose === void 0 ? false : _ref$loose,
68
+ _ref$useExtend = _ref.useExtend,
69
+ useExtend = _ref$useExtend === void 0 ? false : _ref$useExtend;
62
70
 
63
71
  var valueStr = normalizeString(value);
64
- var reg = new RegExp(loose ? looseChineseRegExp : chineseRegExp, supportRegExpUnicode ? 'u' : undefined);
72
+ var basicRegExp = loose ? looseChineseRegExp : chineseRegExp;
73
+ var extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
74
+ var hasExtend = useExtend && supportRegExpUnicode;
75
+ var resultRegExp = hasExtend ? extendRegExp : basicRegExp;
76
+ var flag = hasExtend ? 'u' : undefined;
77
+ var reg = new RegExp(resultRegExp, flag);
65
78
  return reg.test(valueStr);
66
79
  }
67
80
 
package/esm/minus.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import { digitLength } from './utils/math.util';
2
+ import { digitLength, isEffectiveNumeric } from './utils/math.util';
3
3
  import times from './times';
4
- import { isNumber, isNaN, isString } from './utils/type';
5
4
  /**
6
5
  * 精确减法,支持多个数相减
7
6
  *
@@ -33,12 +32,13 @@ function minus() {
33
32
 
34
33
  if (rest.length > 0) {
35
34
  return minus.apply(void 0, [minus(num1, num2)].concat(_toConsumableArray(rest)));
36
- } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
35
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
37
36
 
38
37
 
39
- if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {
40
- // @ts-ignore
41
- return num1;
38
+ if (!isEffectiveNumeric(num1)) {
39
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
40
+ } else if (!isEffectiveNumeric(num2)) {
41
+ return Number(num1);
42
42
  }
43
43
 
44
44
  var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
@@ -1,5 +1,5 @@
1
1
  import { checkBoundary } from './utils/math.util';
2
- import { config } from './utils/config'; // 简体
2
+ import devWarn from './utils/devWarn'; // 简体
3
3
 
4
4
  var chnNumberChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
5
5
  var chnUnitChar = ['', '十', '百', '千']; // 繁体
@@ -34,11 +34,11 @@ var unitSection;
34
34
  */
35
35
 
36
36
  function sectionToChinese(section) {
37
- var str = '',
38
- chnstr = '',
39
- zero = false,
40
- //zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零
41
- unitPos = 0;
37
+ var str = '';
38
+ var chnstr = '';
39
+ var zero = false; //zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零
40
+
41
+ var unitPos = 0;
42
42
 
43
43
  while (section > 0) {
44
44
  // 对数字取余10,得到的数即为个位数
@@ -74,18 +74,18 @@ function sectionToChinese(section) {
74
74
 
75
75
 
76
76
  function convertInteger(num) {
77
- num = Math.floor(num);
77
+ var numInt = Math.floor(num);
78
78
  var unitPos = 0;
79
- var strIns = '',
80
- chnStr = '';
79
+ var strIns = '';
80
+ var chnStr = '';
81
81
  var needZero = false;
82
82
 
83
- if (num === 0) {
83
+ if (numInt === 0) {
84
84
  return numberChar[0];
85
85
  }
86
86
 
87
- while (num > 0) {
88
- var section = num % 10000;
87
+ while (numInt > 0) {
88
+ var section = numInt % 10000;
89
89
 
90
90
  if (needZero) {
91
91
  chnStr = numberChar[0] + chnStr;
@@ -95,7 +95,7 @@ function convertInteger(num) {
95
95
  strIns += section !== 0 ? unitSection[unitPos] : unitSection[0];
96
96
  chnStr = strIns + chnStr;
97
97
  needZero = section < 1000 && section > 0;
98
- num = Math.floor(num / 10000);
98
+ numInt = Math.floor(numInt / 10000);
99
99
  unitPos++;
100
100
  }
101
101
 
@@ -110,12 +110,12 @@ function convertInteger(num) {
110
110
 
111
111
 
112
112
  function convertDecimal(num) {
113
- var numStr = num + '';
114
- var index = numStr.indexOf('.');
113
+ var strNum = num + '';
114
+ var index = strNum.indexOf('.');
115
115
  var ret = '';
116
116
 
117
117
  if (index > -1) {
118
- var decimalStr = numStr.slice(index + 1);
118
+ var decimalStr = strNum.slice(index + 1);
119
119
  ret = mapNumberChar(parseInt(decimalStr));
120
120
  }
121
121
 
@@ -131,11 +131,11 @@ function convertDecimal(num) {
131
131
 
132
132
 
133
133
  function mapNumberChar(num) {
134
- var numStr = num + '';
134
+ var strNum = num + '';
135
135
  var ret = '';
136
136
 
137
- for (var i = 0, len = numStr.length; i < len; i++) {
138
- ret += numberChar[parseInt(numStr[i])];
137
+ for (var i = 0, len = strNum.length; i < len; i++) {
138
+ ret += numberChar[parseInt(strNum[i])];
139
139
  }
140
140
 
141
141
  return ret;
@@ -200,19 +200,11 @@ function numberToChinese(num) {
200
200
  _ref$negative = _ref.negative,
201
201
  negative = _ref$negative === void 0 ? '负' : _ref$negative,
202
202
  _ref$unitConfig = _ref.unitConfig,
203
- unitConfig = _ref$unitConfig === void 0 ? {
204
- w: '万',
205
- // '萬'
206
- y: '亿' // '億'
207
-
208
- } : _ref$unitConfig;
203
+ unitConfig = _ref$unitConfig === void 0 ? {} : _ref$unitConfig;
209
204
 
210
205
  // 非数字 或 NaN 不处理
211
206
  if (typeof num !== 'number' || isNaN(num)) {
212
- if (!config.disableWarning) {
213
- console.warn("\u53C2\u6570\u9519\u8BEF ".concat(num, "\uFF0C\u8BF7\u4F20\u5165\u6570\u5B57"));
214
- }
215
-
207
+ devWarn("\u53C2\u6570\u9519\u8BEF ".concat(num, "\uFF0C\u8BF7\u4F20\u5165\u6570\u5B57"));
216
208
  return '';
217
209
  } // 超过安全数字提示
218
210
 
@@ -228,9 +220,10 @@ function numberToChinese(num) {
228
220
  } // 设置节点计数单位,万、亿、万亿
229
221
 
230
222
 
231
- var defaultUnitWan = '万';
232
- var defaultUnitYi = '亿';
233
- unitSection = ['', unitConfig.w || defaultUnitWan, unitConfig.y || defaultUnitYi, unitConfig.w && unitConfig.y ? unitConfig.w + unitConfig.y : defaultUnitWan + defaultUnitYi]; // 设置0
223
+ var unitWan = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.w) || '万';
224
+ var unitYi = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.y) || '亿';
225
+ var unitWanYi = unitWan + unitYi;
226
+ unitSection = ['', unitWan, unitYi, unitWanYi]; // 设置0
234
227
 
235
228
  if (zero) {
236
229
  numberChar[0] = zero;
@@ -239,16 +232,17 @@ function numberToChinese(num) {
239
232
 
240
233
  var preStr = num < 0 ? negative : ''; // 整数和小数
241
234
 
242
- var chnInteger, chnDecimal; // 处理整数
235
+ var chnInteger, chnDecimal;
236
+ var numAbs = Math.abs(num); // 处理整数
243
237
 
244
238
  if (unit) {
245
- chnInteger = convertInteger(num);
239
+ chnInteger = convertInteger(numAbs);
246
240
  } else {
247
- chnInteger = mapNumberChar(Math.floor(num));
241
+ chnInteger = mapNumberChar(Math.floor(numAbs));
248
242
  } // 处理小数
249
243
 
250
244
 
251
- chnDecimal = convertDecimal(num);
245
+ chnDecimal = convertDecimal(numAbs);
252
246
  return chnDecimal ? "".concat(preStr).concat(chnInteger).concat(decimal).concat(chnDecimal) : "".concat(preStr).concat(chnInteger);
253
247
  }
254
248
 
@@ -108,33 +108,18 @@ function parseIdCard(id) {
108
108
  * @type {{ province: string, city: string, area: string, year: string, month: string, day: string, gender: string }}
109
109
  *
110
110
  */
111
+ // @ts-ignore
111
112
 
112
113
 
113
- var origin = {
114
- province: '',
115
- city: '',
116
- area: '',
117
- year: '',
118
- month: '',
119
- day: '',
120
- gender: ''
114
+ var origin = (info === null || info === void 0 ? void 0 : info.groups) || {
115
+ province: info[1],
116
+ city: info[2],
117
+ area: info[3],
118
+ year: info[4],
119
+ month: info[5],
120
+ day: info[6],
121
+ gender: info[7]
121
122
  };
122
-
123
- if (info.groups) {
124
- // @ts-ignore
125
- origin = info.groups;
126
- } else {
127
- origin = {
128
- province: info[1],
129
- city: info[2],
130
- area: info[3],
131
- year: info[4],
132
- month: info[5],
133
- day: info[6],
134
- gender: info[7]
135
- };
136
- }
137
-
138
123
  var province = Provinces.find(function (item) {
139
124
  return item[0] === origin.province;
140
125
  });
package/esm/plus.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import { digitLength } from './utils/math.util';
2
+ import { digitLength, isEffectiveNumeric } from './utils/math.util';
3
3
  import times from './times';
4
- import { isNumber, isNaN, isString } from './utils/type';
5
4
  /**
6
5
  * 精确加法,支持多个数相加
7
6
  *
@@ -33,12 +32,13 @@ function plus() {
33
32
 
34
33
  if (rest.length > 0) {
35
34
  return plus.apply(void 0, [plus(num1, num2)].concat(_toConsumableArray(rest)));
36
- } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
35
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
37
36
 
38
37
 
39
- if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {
40
- // @ts-ignore
41
- return num1;
38
+ if (!isEffectiveNumeric(num1)) {
39
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
40
+ } else if (!isEffectiveNumeric(num2)) {
41
+ return Number(num1);
42
42
  }
43
43
 
44
44
  var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
@@ -1,3 +1,4 @@
1
+ import normalizeString from './normalizeString';
1
2
  /**
2
3
  * 替换字符,应用场景如:脱敏
3
4
  *
@@ -44,9 +45,8 @@
44
45
  * // => 林**
45
46
  *
46
47
  */
47
- function replaceChar() {
48
- var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
49
48
 
49
+ function replaceChar(str) {
50
50
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
51
51
  _ref$start = _ref.start,
52
52
  start = _ref$start === void 0 ? 3 : _ref$start,
@@ -57,20 +57,21 @@ function replaceChar() {
57
57
  repeat = _ref.repeat,
58
58
  exclude = _ref.exclude;
59
59
 
60
- var strLen = str.length; // 开始位置超过str长度
60
+ var realStr = normalizeString(str);
61
+ var strLen = realStr.length; // 开始位置超过str长度
61
62
 
62
63
  if (Math.abs(start) >= strLen) {
63
- return str;
64
+ return realStr;
64
65
  }
65
66
 
66
67
  start = start >= 0 ? start : strLen + start;
67
68
  end = end >= 0 ? end : strLen + end; // 开始位置大于结束位置
68
69
 
69
70
  if (start >= end) {
70
- return str;
71
+ return realStr;
71
72
  }
72
73
 
73
- var middleStr = str.substring(start, end);
74
+ var middleStr = realStr.substring(start, end);
74
75
 
75
76
  if (exclude) {
76
77
  var reg = new RegExp("[^".concat(exclude, "]"), 'g');
@@ -80,7 +81,7 @@ function replaceChar() {
80
81
  middleStr = _char.repeat(repeat);
81
82
  }
82
83
 
83
- return str.substring(0, start) + middleStr + str.substring(end);
84
+ return realStr.substring(0, start) + middleStr + realStr.substring(end);
84
85
  }
85
86
 
86
87
  export default replaceChar;
package/esm/round.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import divide from './divide';
2
2
  import times from './times';
3
+ import { isEffectiveNumeric } from './utils/math.util';
3
4
  /**
4
5
  * 四舍五入,支持设置精度
5
6
  *
@@ -23,6 +24,12 @@ import times from './times';
23
24
 
24
25
  function round(num) {
25
26
  var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
27
+
28
+ // 兼容处理,如果参数包含无效数值时,返回第一个参数
29
+ if (!isEffectiveNumeric(num)) {
30
+ return NaN;
31
+ }
32
+
26
33
  var base = Math.pow(10, precision);
27
34
  return divide(Math.round(times(num, base)), base);
28
35
  }
package/esm/times.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import { digitLength, float2Fixed, checkBoundary } from './utils/math.util';
3
- import { isNumber, isNaN, isString } from './utils/type';
2
+ import { digitLength, float2Fixed, checkBoundary, isEffectiveNumeric } from './utils/math.util';
4
3
  /**
5
4
  * 精确乘法,支持多个数相乘
6
5
  *
@@ -32,12 +31,13 @@ function times() {
32
31
 
33
32
  if (rest.length > 0) {
34
33
  return times.apply(void 0, [times(num1, num2)].concat(_toConsumableArray(rest)));
35
- } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
34
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
36
35
 
37
36
 
38
- if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {
39
- // @ts-ignore
40
- return num1;
37
+ if (!isEffectiveNumeric(num1)) {
38
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
39
+ } else if (!isEffectiveNumeric(num2)) {
40
+ return Number(num1);
41
41
  }
42
42
 
43
43
  var num1Changed = float2Fixed(num1);
@@ -0,0 +1,16 @@
1
+ import { config } from './config';
2
+ /**
3
+ * 打印警告信息
4
+ *
5
+ * @param {any[]} args 打印的信息
6
+ */
7
+
8
+ function devWarn() {
9
+ if (!config.disableWarning) {
10
+ var _console;
11
+
12
+ (_console = console).warn.apply(_console, arguments);
13
+ }
14
+ }
15
+
16
+ export default devWarn;