数组扁平化
- 数组的扁平化就是将一个嵌套多层的数组转换为只有一层的数组
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const data = [undefined,{ name: 'QF001' }, function () { console.log(123) },null,true,false,1,2,3,[4,5,6,[7,8,9,[10,11,12]]]]
const newData = data.flat(Infinity)
console.log(newData)
const newData = data.toString().split(',')
console.log(newData)
function flat(arr) {
const target = []
function setArr(origin) {
origin.forEach(item => {
if (Object.prototype.toString.call(item) !== '[object Array]') {
target.push(item)
} else {
setArr(item)
}
})
}
setArr(arr)
return target
}
const res = flat(data)
console.log(res)
</script>
</body>
</html>
图片懒加载
- 在 图片 展示出来前, 我们不渲染图片等到图片到达(快到达) 可视区域窗口的时候, 我们再渲染图片
- 懒加载的优点: 提升首页加载速度
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
padding: 0;
margin: 0;
}
.top {
height: 2000px;
}
img {
width: 500px;
height: 500px;
}
</style>
</head>
<body>
<div class="top"></div>
<img data-src="https://img1.baidu.com/it/u=481689849,3217240113&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500" alt="">
<script>
const imgEl = document.querySelector('img')
window.onscroll = function () {
if (imgEl.src !== '') return
const h = window.innerHeight
const pageH = document.documentElement.scrollTop
const top = imgEl.offsetTop
if (h + pageH > top - 200) {
console.log('渲染图片')
imgEl.src = imgEl.dataset.src
}
}
</script>
</body>
</html>