Browse Source

KERNEL-13991 feat: core/func文件夹

es6
zsmj 2 years ago
parent
commit
df41ae3b78
  1. 6
      src/core/func/__test__/function.test.js
  2. 14
      src/core/func/alias.js
  3. 22
      src/core/func/function.js
  4. 2
      src/core/func/index.js
  5. 24
      src/core/func/number.js
  6. 8
      src/core/func/string.js

6
src/core/func/__test__/function.test.js

@ -8,7 +8,7 @@ describe("core-function-test", function () {
* test_author_lei.wang * test_author_lei.wang
*/ */
it("createDistinctName-支持字符串数组", function () { it("createDistinctName-支持字符串数组", function () {
var names = ["name", "name1"]; const names = ["name", "name1"];
expect(BI.Func.createDistinctName(names, "name")).to.equal("name2"); expect(BI.Func.createDistinctName(names, "name")).to.equal("name2");
expect(BI.Func.createDistinctName(names, "name2")).to.equal("name2"); expect(BI.Func.createDistinctName(names, "name2")).to.equal("name2");
}); });
@ -17,8 +17,8 @@ describe("core-function-test", function () {
* test_author_lei.wang * test_author_lei.wang
*/ */
it("createDistinctName-支持对象数组数组", function () { it("createDistinctName-支持对象数组数组", function () {
var names = [{ name: "name" }, { name: "name1" }]; const names = [{ name: "name" }, { name: "name1" }];
expect(BI.Func.createDistinctName(names, "name")).to.equal("name2"); expect(BI.Func.createDistinctName(names, "name")).to.equal("name2");
expect(BI.Func.createDistinctName(names, "name2")).to.equal("name2"); expect(BI.Func.createDistinctName(names, "name2")).to.equal("name2");
}); });
}); });

14
src/core/func/alias.js

@ -209,7 +209,7 @@ function _numberFormat(text, format) {
// 百分比,千分比的小数点移位处理 // 百分比,千分比的小数点移位处理
if (/[%‰]$/.test(format)) { if (/[%‰]$/.test(format)) {
let paddingZero = /[%]$/.test(format) ? "00" : "000"; const paddingZero = /[%]$/.test(format) ? "00" : "000";
tright += paddingZero; tright += paddingZero;
tleft += tright.substring(0, paddingZero.length); tleft += tright.substring(0, paddingZero.length);
tleft = tleft.replace(/^0+/gi, ""); tleft = tleft.replace(/^0+/gi, "");
@ -398,7 +398,7 @@ export const cjkDecode = function (text) {
if (ch === "[") { if (ch === "[") {
const rightIdx = text.indexOf("]", i + 1); const rightIdx = text.indexOf("]", i + 1);
if (rightIdx > i + 1) { if (rightIdx > i + 1) {
let subText = text.substring(i + 1, rightIdx); const subText = text.substring(i + 1, rightIdx);
// james:主要是考虑[CDATA[]]这样的值的出现 // james:主要是考虑[CDATA[]]这样的值的出现
if (subText.length > 0) { if (subText.length > 0) {
ch = String.fromCharCode(eval("0x" + subText)); ch = String.fromCharCode(eval("0x" + subText));
@ -452,7 +452,7 @@ export const htmlDecode = function (text) {
export const cjkEncodeDO = function (o) { export const cjkEncodeDO = function (o) {
if (isPlainObject(o)) { if (isPlainObject(o)) {
let result = {}; const result = {};
each(o, function (v, k) { each(o, function (v, k) {
if (!(typeof v === "string")) { if (!(typeof v === "string")) {
v = jsonEncode(v); v = jsonEncode(v);
@ -468,12 +468,12 @@ export const cjkEncodeDO = function (o) {
export const jsonEncode = function (o) { export const jsonEncode = function (o) {
// james:这个Encode是抄的EXT的 // james:这个Encode是抄的EXT的
let useHasOwn = !!{}.hasOwnProperty; const useHasOwn = !!{}.hasOwnProperty;
// crashes Safari in some instances // crashes Safari in some instances
// var validRE = /^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/; // var validRE = /^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/;
let m = { const m = {
"\b": "\\b", "\b": "\\b",
"\t": "\\t", "\t": "\\t",
"\n": "\\n", "\n": "\\n",
@ -483,7 +483,7 @@ export const jsonEncode = function (o) {
"\\": "\\\\", "\\": "\\\\",
}; };
let encodeString = function (s) { const encodeString = function (s) {
if (/["\\\x00-\x1f]/.test(s)) { if (/["\\\x00-\x1f]/.test(s)) {
return "\"" + s.replace(/([\x00-\x1f\\"])/g, function (a, b) { return "\"" + s.replace(/([\x00-\x1f\\"])/g, function (a, b) {
let c = m[b]; let c = m[b];
@ -499,7 +499,7 @@ export const jsonEncode = function (o) {
return "\"" + s + "\""; return "\"" + s + "\"";
}; };
let encodeArray = function (o) { const encodeArray = function (o) {
let a = ["["], b, i, l = o.length, v; let a = ["["], b, i, l = o.length, v;
for (i = 0; i < l; i += 1) { for (i = 0; i < l; i += 1) {
v = o[i]; v = o[i];

22
src/core/func/function.js

@ -43,7 +43,7 @@ export function getGBWidth(str) {
* @param param 搜索哪个属性 * @param param 搜索哪个属性
*/ */
export function getSearchResult(items, keyword, param) { export function getSearchResult(items, keyword, param) {
let array = isArray(items); const array = isArray(items);
items = array ? BI.flatten(items) : items; items = array ? BI.flatten(items) : items;
param || (param = "text"); param || (param = "text");
if (!isKey(keyword)) { if (!isKey(keyword)) {
@ -54,7 +54,7 @@ export function getSearchResult(items, keyword, param) {
} }
let t, text, py; let t, text, py;
keyword = toUpperCase(keyword); keyword = toUpperCase(keyword);
let matched = array ? [] : {}, find = array ? [] : {}; const matched = array ? [] : {}, find = array ? [] : {};
each(items, function (i, item) { each(items, function (i, item) {
// 兼容item为null的处理 // 兼容item为null的处理
if (isNull(item)) { if (isNull(item)) {
@ -101,7 +101,7 @@ export function getSearchResult(items, keyword, param) {
* @return {any[]} * @return {any[]}
*/ */
export function getSortedResult(items, key) { export function getSortedResult(items, key) {
let getTextOfItem = BI.isFunction(key) ? key : const getTextOfItem = BI.isFunction(key) ? key :
function (item, key) { function (item, key) {
if (BI.isNotNull(key)) { if (BI.isNotNull(key)) {
return item[key]; return item[key];
@ -116,8 +116,8 @@ export function getSortedResult(items, key) {
}; };
return items.sort(function (item1, item2) { return items.sort(function (item1, item2) {
let str1 = getTextOfItem(item1, key); const str1 = getTextOfItem(item1, key);
let str2 = getTextOfItem(item2, key); const str2 = getTextOfItem(item2, key);
if (BI.isNull(str1) && BI.isNull(str2)) { if (BI.isNull(str1) && BI.isNull(str2)) {
return 0; return 0;
} }
@ -130,10 +130,10 @@ export function getSortedResult(items, key) {
if (str1 === str2) { if (str1 === str2) {
return 0; return 0;
} }
let len1 = str1.length, len2 = str2.length; const len1 = str1.length, len2 = str2.length;
for (let i = 0; i < len1 && i < len2; i++) { for (let i = 0; i < len1 && i < len2; i++) {
let char1 = str1[i]; const char1 = str1[i];
let char2 = str2[i]; const char2 = str2[i];
if (char1 !== char2) { if (char1 !== char2) {
// 找不到的字符都往后面放 // 找不到的字符都往后面放
return (BI.isNull(BI.CODE_INDEX[char1]) ? BI.MAX : BI.CODE_INDEX[char1]) - (BI.isNull(BI.CODE_INDEX[char2]) ? BI.MAX : BI.CODE_INDEX[char2]); return (BI.isNull(BI.CODE_INDEX[char1]) ? BI.MAX : BI.CODE_INDEX[char1]) - (BI.isNull(BI.CODE_INDEX[char2]) ? BI.MAX : BI.CODE_INDEX[char2]);
@ -144,7 +144,7 @@ export function getSortedResult(items, key) {
} }
export function beforeFunc(sFunc, func) { export function beforeFunc(sFunc, func) {
let __self = sFunc; const __self = sFunc;
return function () { return function () {
if (func.apply(sFunc, arguments) === false) { if (func.apply(sFunc, arguments) === false) {
return false; return false;
@ -154,9 +154,9 @@ export function beforeFunc(sFunc, func) {
} }
export function afterFunc(sFunc, func) { export function afterFunc(sFunc, func) {
let __self = sFunc; const __self = sFunc;
return function () { return function () {
let ret = __self.apply(sFunc, arguments); const ret = __self.apply(sFunc, arguments);
if (ret === false) { if (ret === false) {
return false; return false;
} }

2
src/core/func/index.js

@ -19,5 +19,5 @@ Object.assign(BI, {
..._date, ..._date,
..._function, ..._function,
..._number, ..._number,
..._string ..._string,
}); });

24
src/core/func/number.js

@ -23,7 +23,7 @@ export function add(num, arg) {
c = Math.abs(r1 - r2); c = Math.abs(r1 - r2);
m = Math.pow(10, Math.max(r1, r2)); m = Math.pow(10, Math.max(r1, r2));
if (c > 0) { if (c > 0) {
let cm = Math.pow(10, c); const cm = Math.pow(10, c);
if (r1 > r2) { if (r1 > r2) {
arg1 = Number(arg1.toString().replace(".", "")); arg1 = Number(arg1.toString().replace(".", ""));
arg2 = Number(arg2.toString().replace(".", "")) * cm; arg2 = Number(arg2.toString().replace(".", "")) * cm;
@ -101,8 +101,8 @@ export function div(num, arg) {
*/ */
function digitLength(num) { function digitLength(num) {
// Get digit length of e // Get digit length of e
let eSplit = num.toString().split(/[eE]/); const eSplit = num.toString().split(/[eE]/);
let len = (eSplit[0].split(".")[1] || "").length - (+(eSplit[1] || 0)); const len = (eSplit[0].split(".")[1] || "").length - (+(eSplit[1] || 0));
return len > 0 ? len : 0; return len > 0 ? len : 0;
} }
@ -114,7 +114,7 @@ export function div(num, arg) {
if (num.toString().indexOf("e") === -1) { if (num.toString().indexOf("e") === -1) {
return Number(num.toString().replace(".", "")); return Number(num.toString().replace(".", ""));
} }
let dLen = digitLength(num); const dLen = digitLength(num);
return dLen > 0 ? num * Math.pow(10, dLen) : num; return dLen > 0 ? num * Math.pow(10, dLen) : num;
} }
@ -122,17 +122,17 @@ export function div(num, arg) {
* 精确乘法 * 精确乘法
*/ */
function times(num1, num2) { function times(num1, num2) {
let others = []; const others = [];
for (let _i = 2; _i < arguments.length; _i++) { for (let _i = 2; _i < arguments.length; _i++) {
others[_i - 2] = arguments[_i]; others[_i - 2] = arguments[_i];
} }
if (others.length > 0) { if (others.length > 0) {
return times.apply(void 0, [times(num1, num2), others[0]].concat(others.slice(1))); return times.apply(void 0, [times(num1, num2), others[0]].concat(others.slice(1)));
} }
let num1Changed = float2Fixed(num1); const num1Changed = float2Fixed(num1);
let num2Changed = float2Fixed(num2); const num2Changed = float2Fixed(num2);
let baseNum = digitLength(num1) + digitLength(num2); const baseNum = digitLength(num1) + digitLength(num2);
let leftValue = num1Changed * num2Changed; const leftValue = num1Changed * num2Changed;
return leftValue / Math.pow(10, baseNum); return leftValue / Math.pow(10, baseNum);
} }
@ -140,15 +140,15 @@ export function div(num, arg) {
* 精确除法 * 精确除法
*/ */
function accDivide(num1, num2) { function accDivide(num1, num2) {
let others = []; const others = [];
for (let _i = 2; _i < arguments.length; _i++) { for (let _i = 2; _i < arguments.length; _i++) {
others[_i - 2] = arguments[_i]; others[_i - 2] = arguments[_i];
} }
if (others.length > 0) { if (others.length > 0) {
return accDivide.apply(void 0, [accDivide(num1, num2), others[0]].concat(others.slice(1))); return accDivide.apply(void 0, [accDivide(num1, num2), others[0]].concat(others.slice(1)));
} }
let num1Changed = float2Fixed(num1); const num1Changed = float2Fixed(num1);
let num2Changed = float2Fixed(num2); const num2Changed = float2Fixed(num2);
return times((num1Changed / num2Changed), Math.pow(10, digitLength(num2) - digitLength(num1))); return times((num1Changed / num2Changed), Math.pow(10, digitLength(num2) - digitLength(num1)));
} }
} }

8
src/core/func/string.js

@ -34,8 +34,8 @@ export function endWith(str, endTag) {
* @return {String} 参数的值 * @return {String} 参数的值
*/ */
export function getQuery(str, name) { export function getQuery(str, name) {
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
let r = str.substr(str.indexOf("?") + 1).match(reg); const r = str.substr(str.indexOf("?") + 1).match(reg);
if (r) { if (r) {
return unescape(r[2]); return unescape(r[2]);
} }
@ -106,10 +106,10 @@ export function allIndexOf(str, sub) {
if (typeof sub !== "string") { if (typeof sub !== "string") {
return []; return [];
} }
let location = []; const location = [];
let offset = 0; let offset = 0;
while (str.length > 0) { while (str.length > 0) {
let loc = str.indexOf(sub); const loc = str.indexOf(sub);
if (loc === -1) { if (loc === -1) {
break; break;
} }

Loading…
Cancel
Save