UNPKG

2.52 kBJavaScriptView Raw
1"use strict";
2/**
3 * Array 对象扩展
4 */
5/**
6 * 判断数组是否为空数组
7 *
8 * @return boolean
9 */
10Array.prototype.isEmpty = function () {
11 return this.length === 0;
12};
13/**
14 * 判断元素是否在数组中
15 *
16 * @param item 查找对象
17 * @return boolean
18 */
19Array.prototype.exists = function (item) {
20 return this.indexOf(item) !== -1;
21};
22/**
23 * 获取一个元素
24 *
25 * @return 第一个元素
26 */
27Array.prototype.first = function () {
28 if (this.length === 0) {
29 throw "Array index out of range: 0";
30 }
31 return this[0];
32};
33/**
34 * 获取一个元素
35 *
36 * @return 第一个元素
37 */
38Array.prototype.last = function () {
39 if (this.length === 0) {
40 throw "Array index out of range: 0";
41 }
42 return this[this.length - 1];
43};
44/**
45 * 数组迭代
46 *
47 * @param callback 回调函数
48 * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
49 */
50Array.prototype.each = Array.prototype.forEach;
51/**
52 * 获取数组大小
53 *
54 * @return 数组大小
55 */
56Array.prototype.size = function () {
57 return this.length;
58};
59/**
60 * 克隆数组
61 *
62 * @return 克隆结果
63 */
64Array.prototype.merge = Array.prototype.concat;
65/**
66 * 返回一个不包含 null/undefined 值元素的数组的新版本
67 *
68 * @return 不包含 null/undefined 值元素的数组的新版本
69 */
70Array.prototype.compact = function () {
71 return this.filter(function (value) { return Object.isUndefinedOrNull(value); });
72};
73/**
74 * 对数组的元素进行去重
75 *
76 * @return 数组元素进行去重后的新版本
77 */
78Array.prototype.unique = function () {
79 var temp = new Array();
80 return this.filter(function (v) {
81 var ret = temp.includes(v) === false;
82 temp.push(v);
83 return ret;
84 });
85};
86/**
87 * 返回不包括参数中任意一个指定值的数组
88 *
89 * @param values 排除值数组
90 * @return 不包括参数中任意一个指定值的数组
91 */
92Array.prototype.without = function () {
93 var values = [];
94 for (var _i = 0; _i < arguments.length; _i++) {
95 values[_i] = arguments[_i];
96 }
97 return this.filter(function (v) {
98 return values.includes(v) === false;
99 });
100};
101/**
102 * 克隆数组
103 *
104 * @return 克隆结果
105 */
106Array.prototype.clone = function () {
107 return this.slice(0);
108};
109/**
110 * 清空数组
111 *
112 * @return 空数组
113 */
114Array.prototype.clear = function () {
115 this.length = 0;
116 return this;
117};
118//# sourceMappingURL=array.js.map
\No newline at end of file