JQuery对象shuffle / randomize

时间:2018-02-07 09:01:19

标签: javascript jquery

您好我有一个JQuery对象,其中每个包含多个div:

</LinearLayout>

我想复制对象并将divs内部混洗,这样当我显示新对象时,它将是原始对象的混乱版本。这是可能的JQuery对象或我将不得不将div存储在一个数组中,如果是这样,有人可以告诉我如何实现这一点?

1 个答案:

答案 0 :(得分:1)

使用通用的随机播放算法(例如 Fisher-Yates shuffle)并将您的对象作为参数传递,例如

  

Codepen demo

function shuffle(array) {
  var m = array.length, t, i;

  // While there remain elements to shuffle…
  while (m) {

    // Pick a remaining element…
    i = Math.floor(Math.random() * m--);

    // And swap it with the current element.
    t = array[m];
    array[m] = array[i];
    array[i] = t;
  }

  return array;
};


var object = $('<div>1</div><div>2</div><div>3</div><div>4</div><div>5</div>');

/* use spread operator to pass the array of divs */
var shuffledArray = shuffle([...object]);

/* print the divs shuffled */
shuffledArray.map((d)=>console.log(d.textContent));

/* append divs to the body */
$('body').html($(shuffledArray));