366 lines
12 KiB
JavaScript
366 lines
12 KiB
JavaScript
"use strict";
|
|
var __extends = (this && this.__extends) || (function () {
|
|
var extendStatics = function (d, b) {
|
|
extendStatics = Object.setPrototypeOf ||
|
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
return extendStatics(d, b);
|
|
};
|
|
return function (d, b) {
|
|
if (typeof b !== "function" && b !== null)
|
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
extendStatics(d, b);
|
|
function __() { this.constructor = d; }
|
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
};
|
|
})();
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.arrayRemoveDuplicateBySort = exports.GroupItem = exports.ArrayExt = exports.List = void 0;
|
|
var List = /** @class */ (function (_super) {
|
|
__extends(List, _super);
|
|
function List() {
|
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
}
|
|
/** 返回符合条件的第一个元素 */
|
|
List.prototype.first = function (fn) {
|
|
if (this.length == 0)
|
|
return null;
|
|
for (var _i = 0, _a = this; _i < _a.length; _i++) {
|
|
var item = _a[_i];
|
|
if (fn(item))
|
|
return item;
|
|
}
|
|
return null;
|
|
};
|
|
/** 返回符合条件的最后一元素 */
|
|
List.prototype.last = function (fn) {
|
|
if (this.length == 0)
|
|
return null;
|
|
for (var i = this.length - 1; i >= 0; i--) {
|
|
if (fn(this[i]))
|
|
return this[i];
|
|
}
|
|
return null;
|
|
};
|
|
/** 最大值 */
|
|
List.prototype.max = function (fn) {
|
|
var maxV;
|
|
for (var _i = 0, _a = this; _i < _a.length; _i++) {
|
|
var i = _a[_i];
|
|
var v = fn(i);
|
|
if (maxV == null) {
|
|
maxV = fn(i);
|
|
}
|
|
else {
|
|
if (v > maxV) {
|
|
maxV = v;
|
|
}
|
|
}
|
|
}
|
|
return maxV;
|
|
};
|
|
/** 最小值 */
|
|
List.prototype.min = function (fn) {
|
|
var minV;
|
|
for (var _i = 0, _a = this; _i < _a.length; _i++) {
|
|
var i = _a[_i];
|
|
var v = fn(i);
|
|
if (minV == null) {
|
|
minV = fn(i);
|
|
}
|
|
else {
|
|
if (v < minV) {
|
|
minV = v;
|
|
}
|
|
}
|
|
}
|
|
return minV;
|
|
};
|
|
/** 累加 */
|
|
List.prototype.sum = function (fn) {
|
|
var v = 0;
|
|
for (var _i = 0, _a = this; _i < _a.length; _i++) {
|
|
var t = _a[_i];
|
|
v = v + fn(t);
|
|
}
|
|
return v;
|
|
};
|
|
/** 平均值 */
|
|
List.prototype.avg = function (fn) {
|
|
if (this.length == 0)
|
|
return 0;
|
|
var sum = this.sum(fn);
|
|
return sum / this.length;
|
|
};
|
|
/** 满足条件的元素数量 */
|
|
List.prototype.count = function (fn) {
|
|
if (this.length == 0)
|
|
return 0;
|
|
var c = 0;
|
|
for (var _i = 0, _a = this; _i < _a.length; _i++) {
|
|
var item = _a[_i];
|
|
if (fn(item))
|
|
c = c + 1;
|
|
}
|
|
return c;
|
|
};
|
|
List.prototype.FindMax = function (fn) {
|
|
return this.reduce(function (a, b) { return fn(a) > fn(b) ? a : b; });
|
|
};
|
|
return List;
|
|
}(Array));
|
|
exports.List = List;
|
|
var ArrayExt = /** @class */ (function () {
|
|
function ArrayExt() {
|
|
}
|
|
/** 返回满足条件的元素数量 */
|
|
ArrayExt.count = function (list, fn) {
|
|
if (list.length == 0)
|
|
return 0;
|
|
var c = 0;
|
|
for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {
|
|
var item = list_1[_i];
|
|
if (fn(item))
|
|
c = c + 1;
|
|
}
|
|
return c;
|
|
};
|
|
/** 移除 */
|
|
ArrayExt.remove = function (list, obj) {
|
|
var index = list.findIndex(function (t) { return t == obj; });
|
|
if (index == -1)
|
|
return;
|
|
list.splice(index, 1);
|
|
};
|
|
/** 返回符合条件的第一个元素 */
|
|
ArrayExt.first = function (list, fn, orderFn1, orderFn2) {
|
|
if (orderFn1 === void 0) { orderFn1 = null; }
|
|
if (orderFn2 === void 0) { orderFn2 = null; }
|
|
if (list.length == 0)
|
|
return null;
|
|
if (orderFn1 == null) {
|
|
for (var _i = 0, list_2 = list; _i < list_2.length; _i++) {
|
|
var item = list_2[_i];
|
|
if (fn(item))
|
|
return item;
|
|
}
|
|
return null;
|
|
}
|
|
var minValue1;
|
|
var minValue2;
|
|
var minItem;
|
|
for (var _a = 0, list_3 = list; _a < list_3.length; _a++) {
|
|
var item = list_3[_a];
|
|
if (fn(item) == false)
|
|
continue;
|
|
var v1 = orderFn1(item);
|
|
var v2 = orderFn2 != null ? orderFn2(item) : 0;
|
|
if (minValue1 == null || v1 < minValue1 || (v1 == minValue1 && v2 < minValue2)) {
|
|
minValue1 = v1;
|
|
minValue2 = v2;
|
|
minItem = item;
|
|
}
|
|
}
|
|
return minItem;
|
|
};
|
|
/** 返回符合条件的最后一元素 */
|
|
ArrayExt.last = function (list, fn, orderFn1, orderFn2) {
|
|
if (orderFn1 === void 0) { orderFn1 = null; }
|
|
if (orderFn2 === void 0) { orderFn2 = null; }
|
|
if (list.length == 0)
|
|
return null;
|
|
if (orderFn1 == null) {
|
|
for (var i = list.length - 1; i >= 0; i--) {
|
|
if (fn(list[i]))
|
|
return list[i];
|
|
}
|
|
return null;
|
|
}
|
|
//
|
|
var maxValue1;
|
|
var maxValue2;
|
|
var maxItem;
|
|
for (var _i = 0, list_4 = list; _i < list_4.length; _i++) {
|
|
var item = list_4[_i];
|
|
if (fn(item) == false)
|
|
continue;
|
|
var v1 = orderFn1(item);
|
|
var v2 = orderFn2 ? orderFn2(item) : 0;
|
|
if (maxValue1 == null || v1 > maxValue1 || (v1 == maxValue1 && v2 > maxValue2)) {
|
|
maxValue1 = v1;
|
|
maxValue2 = v2;
|
|
maxItem = item;
|
|
}
|
|
}
|
|
return maxItem;
|
|
};
|
|
/** 取最大值 */
|
|
ArrayExt.max = function (list, fn, whereF, defaultV) {
|
|
if (whereF === void 0) { whereF = null; }
|
|
if (defaultV === void 0) { defaultV = null; }
|
|
var maxV;
|
|
for (var _i = 0, list_5 = list; _i < list_5.length; _i++) {
|
|
var i = list_5[_i];
|
|
if (whereF && whereF(i) == false)
|
|
continue;
|
|
var v = fn(i);
|
|
if (maxV == undefined) {
|
|
maxV = fn(i);
|
|
}
|
|
else {
|
|
if (v > maxV) {
|
|
maxV = v;
|
|
}
|
|
}
|
|
}
|
|
if (maxV != undefined)
|
|
return maxV;
|
|
return defaultV;
|
|
};
|
|
/** 最小值 */
|
|
ArrayExt.min = function (list, fn, whereF, defaultV) {
|
|
if (whereF === void 0) { whereF = null; }
|
|
if (defaultV === void 0) { defaultV = null; }
|
|
var minV;
|
|
for (var _i = 0, list_6 = list; _i < list_6.length; _i++) {
|
|
var i = list_6[_i];
|
|
if (whereF && whereF(i) == false)
|
|
continue;
|
|
var v = fn(i);
|
|
if (minV == undefined) {
|
|
minV = v;
|
|
}
|
|
else {
|
|
if (v < minV) {
|
|
minV = v;
|
|
}
|
|
}
|
|
}
|
|
if (minV != undefined)
|
|
return minV;
|
|
return defaultV;
|
|
};
|
|
/** 累加 */
|
|
ArrayExt.sum = function (list, fn, wn) {
|
|
var v = 0;
|
|
for (var _i = 0, list_7 = list; _i < list_7.length; _i++) {
|
|
var t = list_7[_i];
|
|
if (wn && wn(t) == false)
|
|
continue;
|
|
v = v + fn(t);
|
|
}
|
|
return v;
|
|
};
|
|
/** 平均值 */
|
|
ArrayExt.avg = function (list, fn) {
|
|
if (this.length == 0)
|
|
return 0;
|
|
var sum = ArrayExt.sum(list, fn);
|
|
return sum / this.length;
|
|
};
|
|
/** 排序 */
|
|
ArrayExt.sortBy = function (list, fn, fn2) {
|
|
if (fn2 === void 0) { fn2 = null; }
|
|
if (fn2 == null)
|
|
return list.sort(function (a, b) { return fn(a) - fn(b); });
|
|
else
|
|
return list.sort(function (a, b) { return fn(a) == fn(b) ? (fn2(a) - fn2(b)) : fn(a) - fn(b); });
|
|
};
|
|
/** 降序 排序 */
|
|
ArrayExt.sortByDescending = function (list, fn) {
|
|
list.sort(function (a, b) { return fn(b) - fn(a); });
|
|
};
|
|
/** 排序成新的数组 */
|
|
ArrayExt.orderBy = function (list, fn, fn2) {
|
|
if (fn2 === void 0) { fn2 = null; }
|
|
var newList = list.concat([]);
|
|
if (fn2 == null)
|
|
return newList.sort(function (a, b) { return fn(a) - fn(b); });
|
|
else
|
|
return newList.sort(function (a, b) { return fn(a) == fn(b) ? (fn2(a) - fn2(b)) : fn(a) - fn(b); });
|
|
};
|
|
/** 降序成新的数组 */
|
|
ArrayExt.orderByDescending = function (list, fn, fn2) {
|
|
if (fn2 === void 0) { fn2 = null; }
|
|
var newList = list.concat([]);
|
|
if (fn2 == null)
|
|
return list.sort(function (a, b) { return fn(b) - fn(a); });
|
|
else
|
|
return list.sort(function (a, b) { return fn(a) == fn(b) ? (fn2(b) - fn2(a)) : fn(b) - fn(a); });
|
|
};
|
|
/** 分组 */
|
|
ArrayExt.groupBy = function (list, fn) {
|
|
var groups = new Array();
|
|
var _loop_1 = function (item) {
|
|
var key = fn(item);
|
|
var group = groups.find(function (t) { return t.key == key; });
|
|
if (group == null) {
|
|
group = new GroupItem(key);
|
|
groups.push(group);
|
|
}
|
|
group.push(item);
|
|
};
|
|
for (var _i = 0, list_8 = list; _i < list_8.length; _i++) {
|
|
var item = list_8[_i];
|
|
_loop_1(item);
|
|
}
|
|
return groups;
|
|
};
|
|
/**
|
|
* 选择
|
|
* let newObjectList = ArrayExt.Select(list,t=>({pA:t.name, pB:t.age + "_"+ t.month}) ) ;
|
|
*/
|
|
ArrayExt.Select = function (list, fn) {
|
|
var newList = new Array();
|
|
for (var _i = 0, list_9 = list; _i < list_9.length; _i++) {
|
|
var t = list_9[_i];
|
|
newList.push(fn(t));
|
|
}
|
|
return newList;
|
|
};
|
|
/** 过来,并按顺序排序 */
|
|
ArrayExt.where = function (list, whereFn, orderfn1, orderfn2) {
|
|
if (orderfn1 === void 0) { orderfn1 = null; }
|
|
if (orderfn2 === void 0) { orderfn2 = null; }
|
|
var newList = list.filter(whereFn);
|
|
if (orderfn1 == null && orderfn2 == null)
|
|
return newList;
|
|
return ArrayExt.sortBy(newList, orderfn1, orderfn2);
|
|
};
|
|
return ArrayExt;
|
|
}());
|
|
exports.ArrayExt = ArrayExt;
|
|
var GroupItem = /** @class */ (function () {
|
|
function GroupItem(k) {
|
|
this.key = k;
|
|
this.list = [];
|
|
}
|
|
Object.defineProperty(GroupItem.prototype, "count", {
|
|
get: function () { return this.list.length; },
|
|
enumerable: false,
|
|
configurable: true
|
|
});
|
|
GroupItem.prototype.push = function (d) {
|
|
this.list.push(d);
|
|
};
|
|
return GroupItem;
|
|
}());
|
|
exports.GroupItem = GroupItem;
|
|
/**
|
|
* 对排序好的数组进行去重操作
|
|
* @param {(e1, e2) => boolean} [checkFuction] 校验对象相等函数
|
|
* @returns {Array<T>} 返回自身
|
|
*/
|
|
function arrayRemoveDuplicateBySort(arr, checkFuction) {
|
|
if (checkFuction === void 0) { checkFuction = checkEqual; }
|
|
if (arr.length < 2)
|
|
return arr;
|
|
var j = 1;
|
|
for (var i = 1, l = arr.length; i < l; i++)
|
|
if (!checkFuction(arr[j - 1], arr[i]))
|
|
arr[j++] = arr[i];
|
|
arr.length = j;
|
|
return arr;
|
|
}
|
|
exports.arrayRemoveDuplicateBySort = arrayRemoveDuplicateBySort;
|