简单技巧题
0.向下取整
一个数和0进行按位或可以用来对该数进行向下取整。浮点数不支持位运算,所以会先把浮点数转换成整数在进行位运算,就好像是对浮点数进行向下取整。 1.1 | 0 = 1
1.将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组
Array.from(new Set(arr.flat(Infinity))).sort((a,b)=>{ return a-b})
2.HH:MM:SS 时间格式的快速获取
const getColonTimeFromDate = date => date.toTimeString().slice(0, 8);
getColonTimeFromDate(new Date()); // "08:38:00"
3.将这段英文this is a pen首字母大写
JS
String.prototype.firstUpperCase=function(){
return this.replace(/^\S/,function(s){return s.toUpperCase();});
}
CSS
text-transform: capitalize;
所有单词首部大写(\b代表单词边界)
const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase());
capitalizeEveryWord('hello world!'); // 'Hello World!'
4.删除HTML字符串中的标签
const stripHTMLTags = str => str.replace(/<[^>]*>/g, '');
stripHTMLTags('<p><em>lorem</em> <strong>ipsum</strong></p>'); // 'lorem ipsum'
5.如何实现事件先冒泡后捕获
根据w3c标准,应先捕获再冒泡。若要实现先冒泡后捕获,给一个元素绑定两个addEventListener,其中一个第三个参数设置为false(即冒泡),另一个第三个参数设置为true(即捕获),调整它们的代码顺序,将设置为false的监听事件放在设置为true的监听事件前面即可。
6.过滤无效空值
空值指的是没有具体意义的一些值,比如0,undefined,null,false,空字符串等
let res = [1,2,0,undefined,null,false,''].filter(Boolean);
>> 1,2
7. 判断两个对象是否相等(没有特殊对象如undefined 日期对象 等)
obj={
a:1,
b:2
}
obj2={
a:1,
b:2
}
obj3={
a:1,
b:'2'
}
JSON.stringify(obj)==JSON.stringify(obj2);//true
JSON.stringify(obj)==JSON.stringify(obj3);//false
8.以Object的某一字段排序:请用 JS 实现年龄从小到大的排序;
var par = [{age:5,name:'张三'},{age:3,name:'李四'},{age:15,name:'王五'},{age:1,name:'随便'}]
var parSort = par.sort(function(a,b){
return a.age - b.age;
})
9.实现一个函数,判断输入是不是回文字符串。
function run(input) {
if (typeof input !== 'string') return false;
return input.split('').reverse().join('') === input;
}
10.判断一个数是否是整数
function isInt(num) {
return num % 1 === 0;
}
console.log(isInt(4)); // true
console.log(isInt(12.2)); // false
console.log(isInt(0.3)); // false
用正则实现 trim() 去掉首位多余的空格
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g, '')
}
//或者
function trim(string){
return string.replace(/^\s+|\s+$/g, '')
}
函数参数校验
// bad
let findStudentByAge = (arr, age) => {
if (!age) throw new Error('参数不能为空')
return arr.filter(num => num === age)
}
// good
let checkoutType = () => {
throw new Error('参数不能为空')
}
let findStudentByAge = (arr, age = checkoutType()) =>
arr.filter(num => num === age)