Skip to content

rem与em的区别

  • rem是相对于根元素的字体大小
  • em是相对父元素的字体大小

说明box-sizing属性

  • box-sizing:content-box是正常盒子,不含内边距和边框
  • box-sizing:border-box是怪异盒子,含内边距和边框

判断obj是否为空对象

javascript
let obj = {}
let obj2 = {a:1}
function isEmpty(obj){
  if( obj == null || typeof obj !== 'object' || Array.isArray(obj)){
    return false
  }
  return Object.keys(obj).length === 0
}
console.log(isEmpty(obj)) // true
console.log(isEmpty(obj2)) // false

判断3==true

  • false

false -> 0

true -> 1

反转字符串

将 i am developer 转换为 developer am i

javascript
const str = 'i am developer';
function reverseWord(str){
  var restr =  str.split(' ').reverse().join(' ')
  return restr
}
console.log(reverseWord(str))

闭包程序输出

javascript
var a = 8;
function output() {
  (function () {
    return function inner(){
      var a = 10;
      a++;
      console.log(a);
    }
  })()();
}

output();
output();
  • 11
  • 11

每次执行都重新进行初始化,所以每次执行结果不变

文字截断样式

css
/* 单行省略 */
p{
  width:200px;
  overflow:hidden;
  white-space:nowarp; /* 禁止文本换行 */
  text-overflow:ellipsis; /* 省略号 */
}

/* 多行省略 */
p{
  width:200px;
  display:-webkit-box; /* 弹性盒子 */
  -webkit-line-clamp:2; /* 显示两行 */
  -webkit-box-orient:vertical; /* 垂直排布 */
  overflow:hidden;
  text-overflow:ellipsis; /* 省略号 */
}

三列响应式布局

html
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>三列布局</title>
  </head>
  <body>
    <div class="container">
      <div class="box"></div>
      <div class="box"></div>
      <div class="box"></div>
    </div>

    <style>
      .container {
        display: flex;
        gap: 30px;
        width: 100%;
      }
      .box {
        flex: 1;
        height: 200px;
        border: 1px solid black;
      }
    </style>
  </body>
</html>

防抖

javascript
function debounce(fn,delay){
  return funrcion(...args){
    let timer = null;
    clearTimeout(timer);
    timer = setTimeout(()=>{
      fn.apply(this,args)
    },delay)
  }
}

数组方法

给出一个数组包含10个对象,每个对象包含名称字符串和分数数组,要求先去掉分数数组中的最大小值,然后取平均值,最后格式化输出名称和平均分

javascript
const array = [
    {pic:'p1',score:[99,84,78,56,98,80,91,88,86,82]},
    {pic:'p2',score:[89,84,78,86,98,80,91,88,86,82]},
    {pic:'p3',score:[76,84,78,96,98,80,91,88,86,82]},
    {pic:'p4',score:[85,84,78,86,98,80,91,88,86,82]},
    {pic:'p5',score:[92,84,78,76,98,80,91,88,86,82]},
]

function getResult(arr){
  const newarr = arr.map(item=>{
    const scores = [...item.score]
    const sort = scores.sort((a,b)=>a-b)
    const leave = sort.slice(1,-1)
    const average = leave.reduce((acc,curr)=>acc+curr)/leave.length
    console.log('名称为'+item.pic + "的平均分是" + average)
  })
  return newarr
}
getResult(array)