背景

经常用到的方法,记录下来,方便使用

具体如下

判断数组包含

1
2
3
4
5
6
Array.prototype.contains = function (needle) {
for (i in this) {
if (this[i] == needle) return true;
}
return false;
};

判断字符串包含

1
2
3
4
String.prototype.contains = function (needle) {
var result = this.indexOf(needle) > -1 ? true : false;
return result;
};

以什么结尾

1
2
3
4
String.prototype.endWith = function (endStr) {
var d = this.length - endStr.length;
return d >= 0 && this.lastIndexOf(endStr) == d;
};

时间转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function add0(m) {
return m < 10 ? "0" + m : m;
}

function formatTime(timestamp) {
var time = new Date();
if (timestamp) {
time = new Date(timestamp);
}
var y = time.getFullYear();
var m = time.getMonth() + 1;
var d = time.getDate();
var h = time.getHours();
var mm = time.getMinutes();
var s = time.getSeconds();
return (
y +
"-" +
add0(m) +
"-" +
add0(d) +
" " +
add0(h) +
":" +
add0(mm) +
":" +
add0(s)
);
}

是否是数字

1
2
3
4
5
6
7
8
9
10
11
function isRealNum(val) {
// isNaN()函数 把空串 空格 以及NUll 按照0来处理 所以先去除
if (val === "" || val == null) {
return false;
}
if (!isNaN(val)) {
return true;
} else {
return false;
}
}

去掉前后空格

1
2
3
4
5
6
7
8
9
10
11
String.prototype.Trim = function () {
return this.replace(/(^\s*)|(\s*$)/g, "");
};
//去掉左边空格
String.prototype.LTrim = function () {
return this.replace(/(^\s*)/g, "");
};
//去掉右边空格
String.prototype.RTrim = function () {
return this.replace(/(\s*$)/g, "");
};

字符串大小写转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
* 大小写转换
* 1:首字母大写 2:首页母小写 3:大小写转换 4:全部大写 5:全部小写
*/
function changeCase(str, type) {
function ToggleCase(str) {
var itemText = "";
str.split("").forEach(function (item) {
if (/^([a-z]+)/.test(item)) {
itemText += item.toUpperCase();
} else if (/^([A-Z]+)/.test(item)) {
itemText += item.toLowerCase();
} else {
itemText += item;
}
});
return itemText;
}
switch (type) {
case 1:
return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {
return v1.toUpperCase() + v2.toLowerCase();
});
case 2:
return str.replace(/^(\w)(\w+)/, function (v, v1, v2) {
return v1.toLowerCase() + v2.toUpperCase();
});
case 3:
return ToggleCase(str);
case 4:
return str.toUpperCase();
case 5:
return str.toLowerCase();
default:
return str;
}
}

拷贝对象字段数据

1
2
3
4
5
6
7
8
9
10
11
12
function copyObjectField(oldArray, newArray) {
var obj = {};
var fields = Object.keys(newArray);
for (var i = 0; i < fields.length; i++) {
if (!newArray[fields[i]]) {
obj[fields[i]] = oldArray[fields[i]];
} else {
obj[fields[i]] = newArray[fields[i]];
}
}
return obj;
}

获取操作系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function detectOS() {
var sUserAgent = navigator.userAgent;
var isWin = navigator.platform == "Win32" || navigator.platform == "Windows";
var isMac =
navigator.platform == "Mac68K" ||
navigator.platform == "MacPPC" ||
navigator.platform == "Macintosh" ||
navigator.platform == "MacIntel";
if (isMac) return "Mac";
var isUnix = navigator.platform == "X11" && !isWin && !isMac;
if (isUnix) return "Unix";
var isLinux = String(navigator.platform).indexOf("Linux") > -1;
if (isLinux) return "Linux";
if (isWin) {
var isWin2K =
sUserAgent.indexOf("Windows NT 5.0") > -1 ||
sUserAgent.indexOf("Windows 2000") > -1;
if (isWin2K) return "Win2000";
var isWinXP =
sUserAgent.indexOf("Windows NT 5.1") > -1 ||
sUserAgent.indexOf("Windows XP") > -1;
if (isWinXP) return "WinXP";
var isWin2003 =
sUserAgent.indexOf("Windows NT 5.2") > -1 ||
sUserAgent.indexOf("Windows 2003") > -1;
if (isWin2003) return "Win2003";
var isWinVista =
sUserAgent.indexOf("Windows NT 6.0") > -1 ||
sUserAgent.indexOf("Windows Vista") > -1;
if (isWinVista) return "WinVista";
var isWin7 =
sUserAgent.indexOf("Windows NT 6.1") > -1 ||
sUserAgent.indexOf("Windows 7") > -1;
if (isWin7) return "Win7";
}
return "other";
}

ajax 全局拦截器

1
2
3
4
5
6
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
if (options.data) {
var params = options.data;
return options;
}
});

替换所有

1
2
3
String.prototype.replaceAll = function (s1, s2) {
return this.replace(new RegExp(s1, "gm"), s2);
};

ping ip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function ping(ip) {
var img = new Image();
var flag = false;
var isCloseWifi = false;
var hasFinish = false;
img.onload = function () {
// console.log("success");
};
img.onerror = function () {
// console.log("error");
};
img.src = ip;
setTimeout(function () {
// console.log("timeout");
}, 20000);
}

比较 2 个对象的不同

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function getObjectDiff(a, b) {
var diffObj = {};
if (Array.isArray(a)) {
a.forEach(function (elem, index) {
if (!Array.isArray(diffObj)) {
diffObj = [];
}
diffObj[index] = getObjectDiff(elem, (b || [])[index]);
});
} else if (a != null && typeof a == "object") {
Object.keys(a).forEach(function (key) {
if (Array.isArray(a[key])) {
var arr = getObjectDiff(a[key], b[key]);
if (!Array.isArray(arr)) {
arr = [];
}
arr.forEach(function (elem, index) {
if (!Array.isArray(diffObj[key])) {
diffObj[key] = [];
}
diffObj[key][index] = elem;
});
} else if (typeof a[key] == "object") {
diffObj[key] = getObjectDiff(a[key], b[key]);
} else if (a[key] != (b || {})[key]) {
diffObj[key] = a[key];
} else if (a[key] == (b || {})[key]) {
delete a[key];
}
});
}
Object.keys(diffObj).forEach(function (key) {
if (
typeof diffObj[key] == "object" &&
JSON.stringify(diffObj[key]) == "{}"
) {
delete diffObj[key];
}
});
return diffObj;
}

二维数组取交集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array.prototype.cross = function () {
var arrs = this;
var arr = arrs.shift();
for (var i = arrs.length; i--; ) {
var p = { boolean: {}, number: {}, string: {} },
obj = [];
arr = arr.concat(arrs[i]).filter(function (x) {
var t = typeof x;
return !(t in p
? !p[t][x] && (p[t][x] = 1)
: obj.indexOf(x) < 0 && obj.push(x));
});
if (!arr.length) return null;
}
return arr;
};