0%

javascript——常用基础API部分方法(函数)集合

摘要:常用基础API部分方法(函数)集合

javascript——常用基础API部分方法(函数)集合

字符串转化成驼峰表示法

将字符串foo=”get-elment-by-id”转化成驼峰表示法”getElementById”

1
2
3
4
5
6
7
8
9
10
11
12
13
function combo(msg) {
// 分割成字符串数组
var arr = msg.split("-");
// 从数组第二位开始遍历,首字母改为大写
for (var i = 1; i < arr.length; i++) {
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substr(1, arr[i].length - 1);
}
// 组合成字符串
msg = arr.join("");
return msg;
}

combo("get-elment-by-id"); // getElmentById

统一日期格式 YYYY-MM-DD

以 YYYY-MM-DD 的方式,输出今天的日期

1
2
3
4
5
6
7
8
9
10
11
var d = new Date();
var year = d.getFullYear();
// 获取月份,记得加一
var month = d.getMonth() + 1;
// 10以下变成两位
month = month < 10 ? '0' + month : month;
var day = d.getDate();
// 10以下变成两位
day = day < 10 ? '0' + day : day;

console.log(year + '-' + month + '-' + day); // 2020-02-29

特殊字符转义

为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数 escapeHtml,将<, >, &, “进行转义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function escapeHtml(str) {
return str.replace(/[<>"&]/g, function (match) {
switch (match) {
case "<":
return "&lt;";
case ">":
return "&gt;";
case "&":
return "&amp;";
case "\"":
return "&quot;";
}
});
}

escapeHtml("<div>"); // &lt;div&gt;

生成几个不同的随机数

生成 5 个不同的随机数,每生成一次就和前面的所有数字相比较,如果有相同的,则放弃当前生成的数字

1
2
3
4
5
6
7
8
9
10
11
12
13
var num1 = [];
for (var i = 0; i < 5; i++) {
// 生成随机数,范围是 [1, 10]
num1[i] = Math.floor(Math.random() * 10) + 1;
for (var j = 0; j < i; j++) {
// 如果重复,重新进行本次循环
if (num1[i] == num1[j]) {
i--;
}
}
}

console.log(num1); // 随机数组 [9, 1, 7, 10, 6]

范围内随机选取一组数字

用 js 实现随机选取 10–50之间的 10 个数字,存入一个数组,并排序。

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 randomNub(aArray, len, min, max) {
// 不符合条件
if (len >= (max - min)) {
return '超过' + min + '-' + max + '之间的个数范围' + (max - min - 1) + '个的总数';
}
// 达到数量后排序
if (aArray.length >= len) {
aArray.sort(function (a, b) {
return a - b
});
return aArray;
}
// 生成随机数
var nowNub = parseInt(Math.random() * (max - min - 1)) + (min + 1);
// 防止重复
for (var j = 0; j < aArray.length; j++) {
if (nowNub == aArray[j]) {
randomNub(aArray, len, min, max);
return;
}
}
aArray.push(nowNub);
// 递归循环
arguments.callee(aArray, len, min, max);
return aArray;
}

var arr = [];
randomNub(arr, 10, 10, 50); // 随机数组[20, 26, 28, 29, 30, 35, 40, 41, 44, 49]

提取URL中的各个GET参数

有这样一个 URL:http://item.taobao.com/item.htm?a=1&b=&c=xxx&d,请写一段 JS 程序提取 URL中的各个 GET 参数(参数名和参数个数不确定),将其按 key-value 形式返回到一个 json 结构中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function serilizeUrl(url) {
var urlObject = {};
// 是否有'?'
if (/\?/.test(url)) {
// 截取'?'以后的字符串,也可结合location对象获取
var urlString = url.substring(url.indexOf("?") + 1);
// 分割成字符串数组 ['a=1', 'b=', 'c=xxx', 'd']
var urlArray = urlString.split("&");
// 遍历 再次分割 [['a', '1'], ['b', ''], ['c', 'xxx'], ['d']]
for (var i = 0, len = urlArray.length; i < len; i++) {
var urlItem = urlArray[i];
var item = urlItem.split("=");
urlObject[item[0]] = item[1];
}
return urlObject;
}
return null;
}

var url = "http://item.taobao.com/item.htm?a=1&b=&c=xxx&d";
serilizeUrl(url); // {a: "1", b: "", c: "xxx", d: undefined}

清除字符串前后的空格

写一个 function,清除字符串前后的空格。(兼容所有浏览器)

1
2
3
4
5
6
7
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+/, "").replace(/\s+$/, "");
}
}
var str = " \t\n test string ".trim();
console.log(str == "test string"); // true

统计出现最多的字符

判断一个字符串中出现次数最多的字符,统计这个次数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 保存出现的字符并计次数
var str = 'asdfssaaasasasasaa';
var json = {};
for (var i = 0; i < str.length; i++) {
if (!json[str.charAt(i)]) {
json[str.charAt(i)] = 1;
} else {
json[str.charAt(i)]++;
}
};
// 查询出现次数最多的字符
var iMax = 0;
var iIndex = '';
for (var i in json) {
if (json[i] > iMax) {
iMax = json[i];
iIndex = i;
}
}

console.log('出现次数最多的是:' + iIndex + ',出现' + iMax + '次');

获取非行间样式

写一个获取非行间样式的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
function getAttr(obj, attr) {
var style;
if (obj.currentStyle) { //当有这个属性的时候currentStyle
style = obj.currentStyle[attr]; //兼容IE
}
else {
style = getComputedStyle(obj, false)[attr]; //主流浏览器
}
return style;
}

var box = document.getElementById('box');
getAttr(box, 'width'); // 200px

数字转化成RMB形式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 转换成字符串并反转
function re(str) {
str += '';
return str.split("").reverse().join("");
}
// 转换为RMB格式
function toRMB(num) {
var tmp = '';
for (var i = 1; i <= re(num).length; i++) {
tmp += re(num)[i - 1];
if (i % 3 == 0 && i != re(num).length) {
tmp += ',';
}
}
return re(tmp);
}

toRMB(1234567); // 1,234,567

数组数字去重

用原型,去掉数组中重复的数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array.prototype.unique = function () {
var n = []; //一个新的临时数组
for (var i = 0; i < this.length; i++) //遍历当前数组
{
//如果当前数组的第 i 已经保存进了临时数组,那么跳过,
//否则把当前项 push 到临时数组里面
if (n.indexOf(this[i]) == -1) {
n.push(this[i]);
}
}
return n;
}

var arr=[1,2,3,3,4,4,5,5,6,1,9,3,25,4];
arr.unique(); // [1, 2, 3, 4, 5, 6, 9, 25]

阶乘

原型方法

1
2
3
4
5
6
7
8
9
10
Number.prototype.N = function () {
var re = 1;
for (var i = 1; i <= this; i++) {
re *= i;
}
return re;
}
var num = 5;

num.N(); // 120

递归方法

1
2
3
4
5
6
function jc(n){
if(n<1) return 1;
return n*arguments.callee(n-1);
}

jc(5); // 120

计算字符串字节数

1
2
3
4
5
6
7
8
9
10
function strlen(s) {
if (!arguments.length || !s) return 0;
var len = 0;
for (var i = 0; i < s.length; i++) {
if (s.charCodeAt(i) > 255) len += 2; else len += 1; //charCodeAt()得到的是 unCode 码
} //汉字的 unCode 码大于 255bit 就是两个字节
return len;
}

strlen('哈哈123'); // 7

拆分字符串

specify(‘hello,world’)//=>’h,e,l,l,o,w,o,r,l,d’实现 specify 函数

1
2
3
4
5
6
7
8
function specify(str) {
var tempArray = Array.prototype.filter.call(str, function (value) {
return value >= 'A' && value <= 'z' && value != "_";
});
return tempArray.join(",");
}

specify("he____*(%$# !!!))))))llo,Wo@@@rld"); // h,e,l,l,o,W,o,r,l,d

FF 与 IE 中阻止事件冒泡

1
2
3
4
5
6
7
8
function stopPropagation(e) {
e = e || window.event;
if (e.stopPropagation) { //W3C 阻止冒泡方法
e.stopPropagation();
} else {
e.cancelBubble = true; //IE 阻止冒泡方法
}
}

用+-×÷和Math实现三目运算

只允许使用 + - * / 和 Math.* ,求一个函数 y = f(x, a, b);当 x > 100 时返回 a 的值,否则返回 b 的值,不能使用 if else 等条件语句,也不能使用|,?:,数组

1
2
3
4
5
6
function f(x, a, b) {
var temp = Math.ceil(Math.min(Math.max(x - 100, 0), 1));
return a * temp + b * (1 - temp);
}

f(10, 1, 2); // 2

arguments实现加法函数

写一个函数可以计算 sum(5,0,-5);输出 0; sum(1,2,3,4);输出 10;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function sum() {
var result = 0;
var len = arguments.length;
for (var i = 0; i < len; i++) {
var num = arguments[i];
if (typeof num == 'number') {
result += num;
}
}
return result;
}

sum(5,0,-5); // 0
sum(1,2,3,4); // 10
-------------本文结束感谢您的阅读-------------