请稍等 ...
×

采纳答案成功!

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

7-18这章节,关于随机播放

黄sir课程里,是做完随机播放功能之前,并没有在shuffle函数里创建arr的副本。
效果:随机播放功能完成,返回歌曲列表并点击,被打乱了,不能正确播放。
然后又去做了selectPlay里如果是random。这层逻辑。
还是行不通,最后再去写的shuffle里 _arr=arr.slice()这个逻辑。
最后效果:success。

我呢,做完了歌手详情页随机播放按钮这个功能,返回歌曲列表页,顺序并没有被打乱。(在此之前我做了shuffle函数里,arr的副本,arr.slice())
大胆猜测:selectPlay里,这层逻辑似乎多余了。如下图:
图片描述

正在回答 回答被采纳积分+3

2回答

高傲的小猫 2020-04-05 18:03:08

我也觉得这个代码是多余的,在 selectPlay 没加判断之前,点了随机播放全部, 然后在点击滚动里面的歌曲出现bug,我觉得是在 shuffle 这个函数里面 没添加 slice()这个方法导致的。如果不加这个方法话,相当于把sequenceList里面的数组给改变了。也即是传值与传址的问题了。

0 回复 有任何疑惑可以回复我~
ustbhuangyi 2019-08-20 10:41:37

为什么是多余的呢?

0 回复 有任何疑惑可以回复我~
  • 因为,我没有写这层逻辑,只是在shuffle函数里,多写了let _arr=arr.slice(),没有问题的。刚才又试了一遍,不写arr.slice()这层逻辑,歌曲列表乱了。
    回复 有任何疑惑可以回复我~ 2019-08-20 10:49:06
  • slice 是肯定需要的,课程源码也是加了这个的,findIndex 的目的是修正切换模式后播放的索引。
    回复 有任何疑惑可以回复我~ 2019-08-20 10:56:12
  • 黄sir,我想表达的意思是:
    我在selectPlay这个action中没有去写:判断随机播放这层逻辑,
    只是在shuffle工具函数中和你视频中保持一样,slice建arr副本,
    但是我的业务还是正常的,返回歌曲列表页,点击歌曲还是对应的,没有被打乱。
    
    所以,源码里,我想反驳这层逻辑多余。
    回复 有任何疑惑可以回复我~ 2019-08-20 13:52:18
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信