大写每个单词的首字母
使用replace()匹配每个单词的第一个字符,并使用toUpperCase()来将其大写
function capitalizeEveryWord(str) {
str = str.replace(/\b[a-z]/g, char => char.toUpperCase());
return str;
}
计数数组中值的出现次数
每次遇到数组中的特定值时,使用reduce()来递增计数器。
function countOccurrences(arr,value) {
var count = arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0);
return count;
}
转义正则表达式
使用replace()来转义特殊字符。
function escapeRegExp(str) {
str = str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
return str;
}
斐波那契数组生成器
创建一个特定长度的空数组,初始化前两个值(0和1)。使用Array.reduce()向数组中添加值,后面的一个数等于前面两个数相加之和(前两个除外)。
function fibonacci(n) {
n = Array(n).fill(0).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []);
return n;
}
斐波那契数组生成器
创建一个特定长度的空数组,初始化前两个值(0和1)。使用Array.reduce()向数组中添加值,后面的一个数等于前面两个数相加之和(前两个除外)。
function fibonacci(n) {
n = Array(n).fill(0).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []);
return n;
}
从数组中获取最大值
使用Math.max()与spread运算符(...)结合得到数组中的最大值。
function arrayMax(arr) {
s = Math.max(...arr);
return s;
}
从数组中获取最小值
使用Math.min()与spread运算符(...)结合得到数组中的最小值。
function arrayMin(arr) {
s = Math.min(...arr);
return s;
}
范围内的随机整数
使用Math.random()生成一个随机数并将其映射到所需的范围,使用Math.floor()使其成为一个整数。
function randomIntegerInRange(min,max) {
var s = Math.floor(Math.random() * (max - min + 1)) + min;
return s;
}
重定向到URL
使用window.location.href或window.location.replace()重定向到url。 传递第二个参数来模拟链接点击(true - default)或HTTP重定向(false)。
function redirect(url,asLink) {
var u = asLink ? window.location.href = url : window.location.replace(url);
return u;
}
滚动到顶部
使用document.documentElement.scrollTop或document.body.scrollTop获取到顶部的距离。
从顶部滚动一小部分距离。
使用window.requestAnimationFrame()来滚动。
function scrollToTop() {
var c = document.documentElement.scrollTop || document.body.scrollTop;
if (c > 0) {
window.requestAnimationFrame(scrollToTop);
window.scrollTo(0, c - c / 8);
}
}
URL参数
使用match() 与适当的正则表达式来获得所有键值对,适当的map() 。使用Object.assign()和spread运算符(...)将所有键值对组合到一个对象中,将location.search作为参数传递给当前url。
function getUrlParameters(url) {
var s= url.match(/([^?=&]+)(=([^&]*))/g).reduce(
(a, v) => (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1), a), {}
);
return s;
}
验证数字
使用!isNaN和parseFloat()来检查参数是否是一个数字,使用isFinite()来检查数字是否是有限的。
function validateNumber(n) {
var s = !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n;
return s;
}
验证是否为邮箱
function isMail(mail) {
var search_str = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/;
if (!search_str.test(mail)) {
return "请输入正确的邮箱!";
}
return true;
}
是否为手机号
function isTel(phone) {
if (phone.search(/(^1[3|4|5|7|8]\d{9}$)|(^09\d{8}$)/) != -1) {
return true;
}
else {
return "手机号格式错误";
}
}
是否为身份证号
function isCardID(sId) {
var aCity = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外" }
var iSum = 0;
var info = "";
if (!/^\d{17}(\d|x)$/i.test(sId)) {
return "你输入的身份证长度或格式错误";
}
sId = sId.replace(/x$/i, "a");
if (aCity[parseInt(sId.substr(0, 2))] == null) {
return "你的身份证地区非法";
}
sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2));
var d = new Date(sBirthday.replace(/-/g, "/"));
if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) {
return "身份证上的出生日期非法";
}
for (var i = 17; i >= 0; i--) {
iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
}
if (iSum % 11 != 1) {
return "你输入的身份证号非法";
}
return true;
}