@whitesev/utils 2.9.11 → 2.9.12

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@whitesev/utils",
4
- "version": "2.9.11",
4
+ "version": "2.9.12",
5
5
  "type": "module",
6
6
  "description": "一个常用的工具库",
7
7
  "main": "dist/index.cjs.js",
package/src/CommonUtil.ts CHANGED
@@ -125,38 +125,54 @@ class CommonUtil {
125
125
  isNull(...args: any[]): boolean {
126
126
  let result = true;
127
127
  const checkList = [...args];
128
- for (const objItem of checkList) {
129
- let itemResult = false;
130
- if (objItem === null || objItem === undefined) {
131
- itemResult = true;
128
+ for (const obj of checkList) {
129
+ let flag = false;
130
+ if (obj === null || obj === undefined) {
131
+ // null undefined
132
+ flag = true;
132
133
  } else {
133
- switch (typeof objItem) {
134
+ switch (typeof obj) {
134
135
  case "object":
135
- if (typeof objItem[Symbol.iterator] === "function") {
136
- /* 可迭代 */
137
- itemResult = objItem.length === 0;
136
+ if (typeof obj[Symbol.iterator] === "function") {
137
+ // 可迭代
138
+ // Map Array NodeList HTMLCollection
139
+ if (obj instanceof Map) {
140
+ flag = obj.size === 0;
141
+ } else {
142
+ const length = obj.length;
143
+ if (typeof length === "number") {
144
+ flag = length === 0;
145
+ } else {
146
+ // 其它的不处理
147
+ }
148
+ }
138
149
  } else {
139
- itemResult = Object.keys(objItem).length === 0;
150
+ if (obj?.toString() === "[object Object]") {
151
+ // {}
152
+ flag = Object.keys(obj).length === 0;
153
+ }
140
154
  }
141
155
  break;
142
156
  case "number":
143
- itemResult = objItem === 0;
157
+ flag = isNaN(obj) ? true : obj === 0;
144
158
  break;
145
- case "string":
146
- itemResult = objItem.trim() === "" || objItem === "null" || objItem === "undefined";
159
+ case "string": {
160
+ const trimStr = obj.trim();
161
+ flag = trimStr.trim() === "" || trimStr === "null" || trimStr === "undefined";
147
162
  break;
163
+ }
148
164
  case "boolean":
149
- itemResult = !objItem;
165
+ flag = !obj;
150
166
  break;
151
167
  case "function": {
152
- const funcStr = objItem.toString().replace(/\s/g, "");
168
+ const funcStr = obj.toString().replace(/\s/g, "");
153
169
  /* 排除()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){} */
154
- itemResult = Boolean(funcStr.match(/^\(.*?\)=>\{\}$|^function.*?\(.*?\)\{\}$/));
170
+ flag = Boolean(funcStr.match(/^\(.*?\)=>\{\}$|^function.*?\(.*?\)\{\}$/));
155
171
  break;
156
172
  }
157
173
  }
158
174
  }
159
- result = result && itemResult;
175
+ result = result && flag;
160
176
  }
161
177
 
162
178
  return result;