1.日期格式处理
var data="2017-11-02"; var date_fix=Number(data.replace(/-/g,""));
2.获取元素索引
<select id="mySelect" v-model="checkName" @change="getsubproject(checkName)"> <option value="">请选择</option> <option v-for="item in checkNameOption">{{item}}</option> </select> var x=document.getElementById("mySelect") alert(x.selectedIndex)
3.获取元素
var x=document.getElementById("ele"); var x=document.getElementsByClassName("ele"); var x=document.getElementsByTagName("p"); var x=document.querySelector(".ele"); //返回匹配指定选择器的第一个元素 var x=document.querySelectorAll(".ele"); //返回所有的元素 x.innerHTML; x.innerText; x.value; x.selectedIndex;
4.保留两位小数
var a = 9.39393; a.toFixed(2);
5.map生成新对象数组
let data1=[]; data2.map(function(item){ let obj={}; obj.diseaseName=item.diseaseName; obj.startTime=item.startTime; obj.endTime=item.endTime; data2.push(obj); });
var data = [[10, 16, 3, 'A'], [16, 18, 15, 'B'], [18, 26, 12, 'C'], [26, 32, 22, 'D'], [32, 56, 7, 'E'], [56, 62, 17, 'F']]; var colorList=['#4f81bd', '#c0504d', '#9bbb59', '#604a7b', '#948a54', '#e46c0b']; data = data.map(function (item, index) { return { value: item, itemStyle: { normal: { color: colorList[index] } } }; });
相关函数:reduce()
6.+new Date是什么意思?
JavaScript中可以在某个元素前使用 ‘+’ 号,这个操作是将该元素转换秤Number类型,如果转换失败,那么将得到 NaN。
所以 +new Date 将会调用 Date.prototype 上的 valueOf 方法,而根据 MDN ,Date.prototype.value 方法等同于 Date.prototype.getTime() 。
所以下列代码效果相同:
console.log(+new Date); console.log(new Date().getTime()); console.log(new Date().valueOf()); console.log(new Date() * 1);
7.日期加一天
function formatDate(time) { var year = time.getFullYear(); var month = time.getMonth() + 1; var date = time.getDate(); return year + "-" + month + "-" + date; } //格式化函数,将毫秒转化为年月日 var startTime=new Date('2017-11-27'); endTime=startTime.setDate(startTime.getDate()+1); //天数加1 endTime=new Date(endTime) //starttime需要转化为时间对象,结果为毫秒数 endTime=formatDate(endTime); //调用函数转化为年月日
7-1.加一个月
var time = new Date() var endTime = new Date(time.setMonth(time.getMonth()+2))
8.localStorage和sessionStorage
sessionStorage.setItem("my_sessionStorage", "sessiontesttext"); sessionStorage.my_sessionStorage123='sessiontesttext123'; localStorage.setItem("my_localStorage", "localtext"); localStorage.my_localStorage123='localtext123'; localStorage.removeItem('my_localStorage'); localStorage.clear(); //清空全部localStorage
9.concat() 方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
arrayObject.concat(arrayX,arrayX,......,arrayX)
10.option获取val及text
var myselect=document.getElementById('test'); //拿到select对象 var index=myselect.selectedIndex; //拿到选中项的索引 var val=myselect.options[index].value; //选中项options的value var text=myselect.options[index].text; //拿到选中项options的text
jquery实现
var options=$('#test option:selected'); //获取选中的项 options.text(); //拿到选中项的文本 options.val(); //拿到选中项的值 $('#test).val() //拿到选中项的值,同上面方法 $('#test).get(0).selectedIndex; //选中项的索引
11.splice()和slice()
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
arrayObject.splice(index,howmany,item1,.....,itemX)
slice() 方法可从已有的数组中返回选定的元素。
arrayObject.slice(start,end)
12.selectionStart获取textarea中光标位置
13.刷新location.reload()
与后退onclick="window.history.go(-1)"
14.函数中的arguments
function add(){ var sum=0; for(var i=0;i<arguments.length;i++){ sum+=arguments[i]; }; return sum; } add(11,2,3,2,100);
15.疑惑:apply,call,
16.日期格式化
function pad2(n) { return n < 10 ? '0' + n : n } function dateFormat(date) { return date.getFullYear().toString() + pad2(date.getMonth() + 1) + pad2(date.getDate()) }
17.json文件中,属性名必须用双引号包裹,并且所有引号必须为双引号
18.手机号隐藏中间4位
var phone = '15151515151'; phone.replace(/(.{3}).*(.{4})/, '$1****$2')
19.URL参数解析
var paramsString = "q=URLUtils.searchParams&topic=api"; var searchParams = new URLSearchParams(paramsString); var topic = searchParams.get("topic");
20.年月日
var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.getMonth(); //获取当前月份(0-11,0代表1月) myDate.getDate(); //获取当前日(1-31) myDate.getDay(); //获取当前星期X(0-6,0代表星期天) myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数) myDate.getHours(); //获取当前小时数(0-23) myDate.getMinutes(); //获取当前分钟数(0-59) myDate.getSeconds(); //获取当前秒数(0-59) myDate.getMilliseconds(); //获取当前毫秒数(0-999) myDate.toLocaleDateString(); //获取当前日期 var mytime=myDate.toLocaleTimeString(); //获取当前时间 myDate.toLocaleString( ); //获取日期与时间
21.sort排序
var nums = [4, 8, 1, 9, 0]; nums.sort((a, b) => a - b);
对象数组排序
function compare( a, b ) { if ( a.last_nom < b.last_nom ){ return -1; } if ( a.last_nom > b.last_nom ){ return 1; } return 0; } objs.sort( compare );
一行表示
objs.sort((a,b) => (a.last_nom > b.last_nom) ? 1 : ((b.last_nom > a.last_nom) ? -1 : 0))
22.对象数组判断某属性是否存在
var inventory = [ {name: 'apples', quantity: 2}, {name: 'bananas', quantity: 0}, {name: 'cherries', quantity: 5} ]; function findCherries(fruit) { return fruit.name === 'cherries'; } console.log(inventory.find(findCherries)); // { name: 'cherries', quantity: 5 }
23.表单验证,金额(数字最大两位小数)
24. 金额千分位
var amount = 1234567.998 Number(parseFloat(amount).toFixed(2)).toLocaleString() // 结果 1,234,567.99
25.删除字符串中的html标签
str.replace(/<[^>]+>/g,"")
26.昨天
var day1 = new Date(); var yesterday = day1.setTime(day1.getTime()-24*60*60*1000)
27.变量提升
a=2; var a; console.log(a); //2
console.log(a); var a=2; //undefined,定义声明在编译阶段进行,赋值声明在执行阶段进行
28.Nnmber(123).toFixed(2)
返回值为字符串
29.数组填充固定值
arr.fill(value[, start[, end]])
相关资料:https://segmentfault.com/a/1190000007651029
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
30.一维数组转为二维
change2Array:function (data, len, arr) { /** * @param data 一维数组 * @param len 每个子数组长度 * @param arr 保存的新数组 */ if (data.length <= len) { arr.push(data) return arr } else { arr.push(data.splice(0, len)) this.change2Array(data, len, arr) } }
31.数组转对象,展开运算符
var a=['a','b','c'] var b={...a}
32.双引号替换为单引号
var a = '{"a":"1","b":"2"}' a = a.replace(/\"/g,"'")
33.字符串超过长度返回…
value.length>12?(value.substring(0,12))+"...":value
34.数字位数不够,进行前补零
function PrefixZero(num, n) { return (Array(n).join(0) + num).slice(-n); }
简要说明如下:
Array(5) => 创建了一个长度为5的空数组
console.log(Array(5));// [empty × 5]
Array(5).join(0) => 用0拼接将数组转换成字符串
console.log(Array(5).join(0));// 0000
Array(5).join(0)+91 => 通过+,实现字符串的拼接
console.log(Array(5).join(0)+91);// 000091
(Array(5).join(0) + 91).slice(-5) => slice(startIndex,endIndex)方法,用于截取
参数说明:
参数是起始位置,含头不含尾,
只有一个参数时,表示从该起始位置一直截取到最后。
参数值为负数时,表示从后往前数,如最后一位,索引是-1
35.生产6位随机数
function mathRand() { var num = '' for (var i = 0;i < 6;i++) { num+=Math.floor(Math.random()*10) } return num }
指定区间随机数
function random(min, max) { return Math.floor(Math.random() * (max - min)) + min }
36.比较是否相等
以下值经过两次逻辑非处理!!
都会变成false
,但是他们之间直接比较却并不一定相等
null == 0 //false !!null == !!0 //true
null,undefined为原始类型和”,0都不相等,但是null,undefined互相又相等
null == undefined //true null == '' //false
false和null,undefined不相等,
null == false //false undefined ==false //false
false,”,0互相之间相等
'' == false 0 == false '' == 0
结论:一个逻辑值和另一个值比较,会将值转化为逻辑值再比较,否则就直接比较
0 == 0 //true null == null //true undefined == undefined //true
var a = null,b = undefined,c = '',d = 0,e = false a==b //true a==c //false b==c //false a==d //false a==e //false
36(1).数字和布尔值比较
结论:数字和布尔值进行比较时,布尔转换为数字,二者再比较。
var a = 'abc' if(a.indexOf('d')){ console.log('') // d不存在返回-1,这里是true }
-1转为布尔为true,但是数字和布尔比较,会将true先转为数字1,如下:
-1 == true // 结果为false,
37.window.print打印功能,状态监听
打印窗口关闭:window.onafterprint
打印前:onbeforeprint
媒体查询检测打印状态@media print{}
38.console.dir与console.log区别
console.dir可以显示native code,并且可以显示dom中的所有属性
let $ele = document.querySelector('body') console.log($ele) console.dir($ele) console.log(Promise) console.dir(Promise)
39.Promise
中的语法错误浏览器控制台不会报错,所以务必要在catch
中打印出来
40.new Date('2023-05-03')
,生成的时间是2023 08:00:00
早上八点,比较计算时候需要注意
41.类(class)
子类只要继承父类,可以不写constructor ,一旦写了 ,则在constructor中的第一句话必须是super