【问题标题】:Rearrange divs randomly using Javascript or Jquery使用 Javascript 或 Jquery 随机重新排列 div
【发布时间】:2016-07-19 15:27:07
【问题描述】:

我有一个使用 div 的 3x3 网格布局,单击按钮后我需要 div 随机重新排列。以下链接说明了我需要创建的内容。

我不需要 HTML 布局或 CSS 设计本身的帮助,而是如何使用本机 Javascript 或 jQuery 创建 onclick 函数以便“随机播放”和“排序”按钮去工作。如果可能的话,最好是 Jquery,因为我更喜欢它的语法。

我提前感谢大家的帮助和支持。非常感谢任何对我自己的研究有用的链接。

我不是在寻找其他人来为我做我的工作,尽管我们非常感谢解决方案,但也许会以一种伪代码的方式指导我。

【问题讨论】:

  • jQuery 有非常好的文档。以下是如何使用 click() 处理程序:api.jquery.com/click。这是附加点击处理程序的本机 JS 方式的文档:developer.mozilla.org/en-US/docs/Web/API/EventTarget/…
  • 您可以使用isotope.metafizzy.co 进行随机播放。
  • 这看起来像是某种测试?你应该能够自己做到这一点吗?我看到你删除了提到它现在从图像中测试的部分......
  • @ComputerLocus 我确实这样做了,因为我不知道这里的确切行为规则。我只需要一些关于伪代码的帮助,或者我应该使用哪些选择器。我有一个使用数组的想法,但不确定这是否是最有效的方法。
  • @SC87 但这是为了某种工作申请吗?如果您无法完成此类工作,您是否应该继续执行此类任务?

标签: javascript jquery sorting random shuffle


【解决方案1】:

您可以使用多种不同的算法来“打乱”项目列表。但是,我最喜欢的方法之一是以下,因为它非常简洁。

通用洗牌算法:

  1. 查找要重新排列的项目列表。
  2. 从要重新排列的项目中移除随机元素
  3. 将元素插入新列表
  4. 重复步骤 1-3,直到原始列表中没有其他项目

代码示例

这是一个可以解决问题的函数:

$container = $("#container");
$divList = $("div");

$("#shuffle").on("click", function(){
  //copy and remove all divs
  $divCopy = $divList.clone(true);
  $("div").remove();

  while($divCopy.length > 0){
    //chose random index of div array
    var randomIndex = Math.floor(Math.random() * $divList.length);

    $container.append($divCopy.splice(randomIndex, 1));
  }
});

https://jsfiddle.net/oruq1qou/ 有完整的工作版本

如果您有兴趣寻找解决此问题的其他方法,我建议您阅读一下不同类型的随机播放算法。

【讨论】:

  • 非常感谢。这正是我需要完成的。但是,如果我要求你给我一些关于你分析和找出任务的心理过程的见解,可以吗?谢谢。
  • @SC87 嘿,很高兴它对你有用。我试图概述这个问题的更通用的算法,希望你能更好地理解我的想法。
  • 现在正在浏览它。我真诚地感谢您的帮助和耐心。
  • @SC87 没问题,如果您需要更多解释,请告诉我
猜你喜欢
  • 1970-01-01
  • 2017-04-16
  • 2016-05-15
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多