请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

!pages[page]的疑惑

			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

3回答

Amor丶安于命 2018-11-23 10:32:06

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 回复 有任何疑惑可以回复我~
  • CHHHHH #1
    豁然开朗~ 谢谢老铁
    回复 有任何疑惑可以回复我~ 2018-12-25 16:58:52
  • 老铁,你的答案顿时让我醍醐灌顶,茅塞顿开,恍然大悟,豁然开朗,如梦初醒,振聋发聩,如雷贯耳
    回复 有任何疑惑可以回复我~ 2019-01-24 16:55:34
  • 谢谢老铁,让我豁然开朗,pages是个二维数组,他每次多一个页面都要把那个页面初始化成一个数组,否则不能往里面push数据,这个if就是用来判断有几个页面,然后把每个页面初始化成数组的!!!
    回复 有任何疑惑可以回复我~ 2019-04-18 03:25:19
慕函数2132411 2018-11-21 23:30:46

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

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

0 回复 有任何疑惑可以回复我~
  • 先定义pages=[];但是里面没有任何值,pages[0]和pages[1]都不存在。
    如果你没有定义pages[0]=[];肯定是会报pages[0]不存在,所以你无法push进去数据的。
    回复 有任何疑惑可以回复我~ 2018-11-23 10:33:10
Dell 2018-11-20 20:23:21

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信