首页 > 解决方案 > 如何使用 Js 洗牌

问题描述

我搜索了如何洗牌我制作的一副牌,我发现了这些线条,但我无法理解......

  1. 是 (this) 在第二行中写的一个 js 关键字或者它不仅仅是一个给定的名称
  2. m如何存储deck.length + i
  3. 第六行末尾的m--是什么意思
  4. 8号线的作用是什么

    shuffle() {
        const { deck } = this;
        let m = deck.length, i;
    
        while (m) {
          i = Math.floor(Math.random() * m--);
    
          [deck[m], deck[i]] = [deck[i], deck[m]];
        }
    
        return this;
      }
    

我知道有很多问题要问,但我会很感激你的帮助

标签: javascriptwhile-loop

解决方案


是 (this) 在第二行中写的一个 js 关键字或者它不仅仅是一个给定的名称

是的,this是 JavaScript 中的关键字。我强烈建议你用谷歌搜索“this javascript”来了解它是如何this工作的。这需要一些时间来解决问题。

m如何存储deck.length + i

我假设你在问关于let m = deck.length, i;. 注意有一个,,而不是一个+m只有商店deck.lengthi是在此行上声明的单独变量。我建议您使用 Chrome 或 Firefox 开发人员工具来逐步检查代码以检查m. 如果您不熟悉这些工具,那么您肯定需要了解它们以及如何有效地使用它们,尤其是在调试代码时。

第六行末尾的m--是什么意思

--是后增量运算符。它将 的值减少m1 并将新值存储在m. 减法后的结果用于表达式的其余部分。您可以在自己的代码或 JavaScript 控制台中试验此运算符。

8号线的作用是什么

[deck[m], deck[i]] = [deck[i], deck[m]];使用解构语法交换数组中的两个值。同样,您可以使用浏览器的开发人员工具中的调试器来检查变量的值,看看会发生什么。


推荐阅读