!pages[page]的疑惑

来源:7-6 Vue项目首页 - 图标区域逻辑实现

精慕门8222655

2018-11-20

			this.iconList.forEach((item,index) => {
				const page = Math.floor(index / 8)
				if (!pages[page]) {
					pages[page] = []
				}
				pages[page].push(item)
			})

老师你好。
forEach都已经确定有第8个item了,const page = 1才会生成第二页,
这样的话if(!pages[page])永远都不为真的吧。
无论你是第二页的第一个图标(index=8)还是第三页的第一个图标(index=16),有这个item才会显示,没这个这个item的话pages[1],pages[2]这些判断都不会存在了,因为index的关系,page都不会等于这些数字,所以这个判断是不是多余了?

写回答

3回答

Amor丶安于命

2018-11-23

pages就是个中间数据,先定义pages=[];但是里面没有任何值,pages[0]和pages[1]都不存在。

const page = Math.floor(index / 8),里面page获取的是当前的数据应该在第几页,比如现在的page=0,那么现在的数据item应该在第一页,那么我们应该给pages[0]这个数组里push进去item,但是如果你没有定义pages[0]=[];肯定是会报pages[0]不存在,所以你无法push进去数据的。

所以

if (!pages[page]) {
  pages[page] = []
}
pages[page].push(item)

里面的if (!pages[page])就是判断pages数组里是否存在page这一页,如果存在就直接往这一页里push item数据,不存在就先设置pages[当前页码]=[],然后再往这一页里push item数据

6
4
qq_何老三_0
谢谢老铁
2019-07-11
共4条回复

慕函数2132411

2018-11-21

因为page应该是一直存在的  所以这个  !pages[page] 是因为什么成立的呢。。

如果把判断 去掉 会显示push没有定义,这是因为什么呢 0.0   

0
1
Amor丶安于命
先定义pages=[];但是里面没有任何值,pages[0]和pages[1]都不存在。 如果你没有定义pages[0]=[];肯定是会报pages[0]不存在,所以你无法push进去数据的。
2018-11-23
共1条回复

Dell

2018-11-20

自己拿个笔记本,再走一遍,不多余的

0
0

Vue2.5-2.6-3.0开发去哪儿网App 零基础入门到实战

课程紧跟Vue3版本迭代,企业主流版本Vue2+Vue3全掌握

10675 学习 · 8191 问题

查看课程