JavaScript实用至上,收藏就完了

交互设计

  由于之前的前端大佬工作甚是繁重,身体欠恙,急需六味地黄丸和韭菜补充,在头条大佬的美色诱惑下,将由超重的我给大家带来前端知识。

  本期是我的处女作,一向以活好著称的我给大家来点精华,不搞假大空,直接上实操,不用看懂,收藏就完了,以后你肯定会用到的。

  今天带来的是前端开发中经常碰到的数字问题,解决方式有些过于粗暴,未来还会不断美化更新。

  充分利用JavaScript自带原生方法解决问题

  前端页面和数据处理虽然看起来简单,但是一个优秀的前端工程师对于细节的把控也是至关重要的,如何合理处理业务也体现前端工程师对性能优化的功力(后期我会专门出一期性能优化的长文,敬请期待。)

  获取数组最大值和最小值

  利用sort排序方法针对数组进行排序,数组第一个和最后一个就是最大值和最小值let arr = [1,2,3,4,5,6,7];arr.sort(function (a, b) {return a-b;}); //sort传入一个排序函数,a-b为升序排序,b-a为降序排序let min = arr[0]; // 1let max = arr[arr.length - 1]; //7使用Math中的max/min方法可以使用apply来实现。apply传入的是一个数组let arr = [1,2,3,4,5,6,7];let max = Math.max.apply(null, arr);let min = Math.min.apply(null, arr);console.log(max, min) // 7,1浮点数取整

  丢弃小数部分,保留整数部分`parseInt(7/2)`向上取整,有小数就整数部分加1`Math.ceil(7/2)`四舍五入`Math.round(7/2)`向下取整`Math.floor(7/2)`注:都是JS内置对象数组去重

  ES6arr2=[1,1,1,2,2,2,3,4]arr1 = Array.from(new Set(arr2)) //arr1=[1,2,3,4]push( )去重let arr3 = []; for(var i = 0; i < arr.length; i++) { (function(i) { if(arr3.indexOf(arr[i]) == -1) { //不包含该值则返回-1 arr3.push(arr[i]); } }(i)) } console.log(arr3); //如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组 let arr4 = [arr[0]]; for(var i = 1; i < arr.length; i++) { (function(i) { if(arr.indexOf(arr[i]) == i) { arr4.push(arr[i]); } }(i)) } console.log(arr4); sort()去重let arrSort = arr.sort(); let arr5 = []; for(let i = 0; i< arrSort.length; i++) { if(arrSort[i] != arrSort[i+1]) { arr5.push(arrSort[i]); } } console.log(arr5); splice( )去重for(let i = 0, len = arr6.length; i < len; i++) { for(let j = i + 1; j < len; j++) { if(arr6[i] === arr6[j]) { arr6.splice(i,1); len--; j--; } } } console.log(arr6); 用好 filter,map,every, find和其它 ES6 新增的高阶遍历函数

  将数组中的false值去掉const array = [3, 4, 5, 2, 3, undefined, null, 0, ""];const compact = arr => arr.filter(Boolean);compact(array);//[3, 4, 5, 2, 3]判断用户是否全部是成年人const users = [{ name: "Jim", age: 23 },{ name: "Lily", age: 17 },{ name: "Will", age: 35 }];users.every(user => user.age >= 18);//false判断用户中是否有30岁以上的人const users = [{ name: "Jim", age: 23 },{ name: "Lily", age: 17 },{ name: "Will", age: 35 }];users.find(item => item.age>30);//{name: "Will", age: 35}合理利用正则表达式解决问题

  <input>标签输入限制,文本框只能输入数字代码(小数点也不能输入)

  <input onkeyup="this.value=this.value.replace(/\D/g,)" onafterpaste="this.value=this.value.replace(/\D/g,)"> 只能输入数字,能输小数点.<input onkeyup="if(isNaN(value))execCommand(undo)" onafterpaste="if(isNaN(value))execCommand(undo)"> <input name=txt1 onchange="if(/\D/.test(this.value)){alert(只能输入数字);this.value=;}"> 数字和小数点方法二<input type=text tvalue="" ovalue="" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.tvalue=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.ovalue=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.tvalue=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.ovalue=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?

  \.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.ovalue=this.value}">只能输入字母和汉字<input onkeyup="value=value.replace(/[\d]/g,) "onbeforepaste="clipboardData.setData(text,clipboardData.getData(text).replace(/[\d]/g,))" maxlength=10 name="Numbers"> 只能输入英文字母和数字,不能输入中文<input onkeyup="value=value.replace(/[^\w\./]/ig,)"> 只能输入数字和英文<font color="Red">chun</font> <input onKeyUp="value=value.replace(/[^\d

  chun]/g,)"> 小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:<input onKeyPress="if((event.keyCode<48

   event.keyCode>57) && event.keyCode!=46

   /\.\d\d$/.test(value))event.returnValue=false"> 小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:<input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,$1$2.$3)">input的type设置为number后可以输入e<input type=number onkeypress=return( /[\d]/.test(String.fromCharCode(event.keyCode) ) ) />JS判断字符串是否全是空格

  let test = " \n ";if(test.match(/^\s+$/)){console.log("all space or \\n")}if(test.match(/^[ ]+$/)){console.log("all space")}if(test.match(/^[ ]*$/)){console.log("all space or empty")}if(test.match(/^\s*$/)){console.log("all space or \\n or empty")}常用正则匹配

  /^\d+$///非负整数(正整数 + 0)/^[0-9][1-9][0-9]$///正整数/^((-\d+)

  (0+))$///非正整数(负整数 + 0)/^-[0-9][1-9][0-9]$///负整数/^-?\d+$///整数/^\d+(\.\d+)?$///非负浮点数(正浮点数 + 0)/^(([0-9]+\.[0-9][1-9][0-9])

  ([0-9][1-9][0-9]\.[0-9]+)

  ([0-9][1-9][0-9]))$///正浮点数/^((-\d+(\.\d+)?)

  (0+(\.0+)?))$///非正浮点数(负浮点数 + 0)/^(-(([0-9]+\.[0-9][1-9][0-9])

  ([0-9][1-9][0-9]\.[0-9]+)

  ([0-9][1-9][0-9])))$///负浮点数/^(-?\d+)(\.\d+)?$///浮点数今天先暂且给大家带来这些,没什么可读性,但是在工作中经常会使用到,时间匆忙没有好好完善,有兴趣可以持续。

  感谢观看,下期再见!

标签: 交互设计