关于 sliders.filter(() => Math.random() >= 0.5)

关于 sliders.filter(() => Math.random() >= 0.5)

let sliders = res.data.slider;

const slider = [sliders[Math.floor(Math.random() * sliders.length)]];

sliders = sliders.filter( () => Math.random() >= 0.5 );

请问老师:

Math.random() 是 乱数 0 ~ 1 随机

filter() 是 通過檢查來返回()中的元素,構成新的數組,本章節是判断乱数是否大於0.5

而这句话的意思是 :sliders.filter(() => Math.random() >= 0.5)

个人白话文理解:幻灯片总数组的,返回(随机数将大于等于0.5的取出)

问题:可是 Math.random() >= 0.5 所取出的值都是 小于 1 的值,他要怎么取得 sliders 中的数组?

请老师解惑及检查思路,谢谢您。


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

你好同学,同学说的sliders的数组是 0 ~ 9说的是随机数吗?不是的哦,数组中保存的是图片,也就是我们请求过来的数据,如下:

http://img1.sycdn.imooc.com//climg/5d5d292d0001118c07790338.jpg

另外,这个过滤条件中并没有相乘啊 ,只是判断随机生成的数字是否大于0.5 。同学是不是看错了,导致理解的有误区。

http://img1.sycdn.imooc.com//climg/5d5d2a3e0001116207780085.jpg

老师在第一次回复中有讲解这个代码,建议同学重新梳理一下哦。

http://img1.sycdn.imooc.com//climg/5d5d2ba70001a86a07560208.jpg

祝学习愉快,望采纳。

  • 慕小庄 提问者 #1
    老师我懂了!sliders.filter(() => Math.random() >= 0.5) 这句话中的() => Math.random() >= 0.5,只是判断布尔值,如果是 true,就将当前sliders的组数遍历出来,所以filter() 一共遍历来10次,但遍历出来的是随机的,每一个遍历出来的几率是50%。 老师,这样理解是对的吗?
    2019-08-21 22:16:16
  • 好帮手慕夭夭 回复 提问者 慕小庄 #2
    棒!这里理解对哦
    2019-08-22 09:25:24
  • 慕小庄 提问者 回复 好帮手慕夭夭 #3
    完美解答!謝謝老師!
    2019-08-22 09:53:44
好帮手慕夭夭 2019-08-21 15:52:02

你好同学,这就是filter()方法自己规定的用法,内部已经封装好的,所以我们按照官方提供的方式去用就行。如果不了解filter基础用法,老师也给你简单讲解一下:

filter过滤数组中的元素的,括号里面接收一个函数,函数中返回一个条件,这个条件成立返回true,不成立返回false。课程中使用的是es6箭头函数 。看如下

遍历数组中的元素,如果元素满足num>4的条件,就会返回,如果不满足条件,则不会返回。

http://img1.sycdn.imooc.com//climg/5d5cf7ad00014d2b05470132.jpg

祝学习愉快,望采纳。

  • 提问者 慕小庄 #1
    老师不好意思,我最后理一下我有疑惑的思路,请老师过目: sliders = sliders.filter(() => Math.random() >= 0.5); sliders的数组是 0 ~ 9,一共10个,他会分别遍地到 filter()中并与 乱数相乘 ,只要 相乘 下来的值大于0.5 便会 被遍历出来 及 返回新的数组。 请问这样的理解对吗?
    2019-08-21 16:07:56
好帮手慕夭夭 2019-08-20 19:23:49

你好同学,参考如下理解:

1.Math.random() 是0 ~ 1 随机数。

2.同学要注意看一下代码,随机数Math.random() 外层包裹一个Math.floor()向下取整。当随机数乘以数组的长度之后,都会向下取整的哦。

http://img1.sycdn.imooc.com//climg/5d5bd6c300011e5c09620114.jpg

3.filter会遍历数组中所有元素,如果判断条件是true,则把当前遍历的元素返回给新数组。如果返回false,则不会加到新数组了。随机数是0~1,随机数返回大于0.5的概率就是50%(即如下判断条件有50%的概率为true)。老师设置这个判断条件,是让每一个元素有50%的概率加入到新数组中。

http://img1.sycdn.imooc.com//climg/5d5bd7800001829808030088.jpg

祝学习愉快,望采纳。

  • 提问者 慕小庄 #1
    请问老师: sliders.filter(() => Math.random() >= 0.5) 中,为什么 () => Math.random() >= 0.5 这句话是判断式? 看不出来 是 if else 请老师解惑,谢谢您。
    2019-08-21 13:53:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师