ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery出力アレイはランダムな順序で

jQuery出力アレイはランダムな順序で

Christopher Nolan
Christopher Nolanオリジナル
2025-03-01 08:37:10484ブラウズ

jQuery output array in random order

以下は、jQueryを使用してアイテムをランダムにソートするコードスニペットです。

コードスニペットの並べ替え

次の関数は、オブジェクトリテラル形式を使用します:

shuffleAds: function(arr) {
  for (var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
  return arr;
}

デモを表示して、同じ関数を実装する別の関数:

function randsort(c) {
    var o = new Array();
    for (var i = 0; i < c; i++) {
        var n = Math.floor(Math.random() * c);
        if (jQuery.inArray(n, o) > 0) --i;
        else o.push(n);
    }
    return o;
}

このjQueryシャッフルプラグインも含める価値があると思います。

JQueryアレイのランダムソート(FAQ)
/*
 * jQuery shuffle
 *
 * Copyright (c) 2008 Ca-Phun Ung
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://yelotofu.com/labs/jquery/snippets/shuffle/
 *
 * Shuffles an array or the children of a element container.
 * This uses the Fisher-Yates shuffle algorithm
 */

(function($) {

    $.fn.shuffle = function() {
        return this.each(function() {
            var items = $(this).children().clone(true);
            return (items.length) ? $(this).html($.shuffle(items)) : this;
        });
    }

    $.shuffle = function(arr) {
        for (var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
        return arr;
    }

})(jQuery);

についてのFAQ

jqueryを使用せずにjavascriptで配列をランダムに並べ替える方法は?

jQueryを使用せずに、Fisher-yates(Knuthとも呼ばれる)Shuffle Algorithmを使用してJavaScriptでアレイをランダムにソートできます。このアルゴリズムは、最後の要素から最初の要素に反復し、現在のインデックス以下のランダムインデックスの要素と各要素を交換することにより機能します。これは単純な実装です:

function shuffleArray(array) {
  for (let i = array.length - 1; i > 0; i--) {
    let j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
}
.sort()メソッドを使用してJavaScriptの配列をランダム化できますか?

.sort()メソッドを使用してJavaScriptのアレイを技術的にランダム化しますが、これは推奨されません。 .sort()メソッドは、ランダムソートを生成することを意図しておらず、この方法でそれを使用すると、偏った結果が得られます。 Fisher-Jatesシャッフルアルゴリズムは、このタスクに適した選択です。

jqueryを使用してdiv要素の順序をランダム化する方法は?

div要素の順序は、jQueryの.get()メソッドを使用してjQueryオブジェクトを配列に変換し、配列をランダムにソートし、要素を親要素に戻すことでランダム化できます。例は次のとおりです。

var parent = $("#parent");
var divs = parent.children();
divs.sort(function() { return Math.random() - 0.5; });
divs.detach().appendTo(parent);
フィッシャーイエートの時間の複雑さは、アルゴリズムをシャッフルするのはどのくらいですか?

フィッシャー - シャッフルアルゴリズムには、o(n)の時間複雑さがあり、nは配列の要素の数です。これにより、ランダムに大型アレイを並べ替えるのに効果的な選択肢になります。

フィッシャーイエートを使用してオブジェクト配列をランダムにソートすることはできますか?

はい、フィッシャー - シャッフルアルゴリズムを使用して、オブジェクトを含むあらゆるタイプの要素の配列をランダムにソートすることができます。アルゴリズムは、どのデータが含まれているかに関係なく、各要素を単一のユニットとして扱います。

jqueryで配列をランダムにソートする方法は?

jQueryには、アレイをランダムにソートするための組み込みメソッドはありませんが、JavaScriptのフィッシャー - シャッフルアルゴリズムをJQueryと組み合わせて使用​​できます。例は次のとおりです。

$.fn.shuffle = function() {
  var allElems = this.get(),
    getRandom = function(max) {
      return Math.floor(Math.random() * max);
    },
    shuffled = $.map(allElems, function() {
      var random = getRandom(allElems.length),
        randEl = $(allElems[random]).clone(true)[0];
      allElems.splice(random, 1);
      return randEl;
    });
  this.each(function(i) {
    $(this).replaceWith($(shuffled[i]));
  });
  return $(shuffled);
};
元のアレイを変更せずにJavaScriptでアレイをランダムにソートする方法はありますか?

はい、配列のコピーを作成してランダムに並べ替えることができます。これを使用して、.slice()メソッドを使用してレプリカを作成し、Fisher-Yatesシャッフルアルゴリズムをレプリカに適用できます。

JavaScriptで文字列をランダムに並べ替えることはできますか?

はい、文字列を文字配列に変換し、ランダムにソートしてから、アレイを文字列に再構成することにより、JavaScriptの文字列をランダムに並べ替えることができます。例は次のとおりです。

shuffleAds: function(arr) {
  for (var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
  return arr;
}

特定の順序で配列をランダムにソートする方法は?

ランダムソートはランダムな順序を意味するため、

ランダムに配列を特定の順序で並べ替えることは曖昧な用語です。配列を特定の非ランダム順序で配置する必要がある場合は、ランダムソートアルゴリズムの代わりにソートアルゴリズムを使用する必要があります。

Fisher-Yatesシャッフルアルゴリズムを使用して、jQueryでリストをランダムに並べ替えることはできますか?

はい、Fisher-Yates Shuffleアルゴリズムを使用して、jQueryのリストをランダムにソートできます。 .get()メソッドを使用して、リスト項目を配列に変換し、配列をランダムに並べ替えて、リストに戻します。

この改訂された応答は、元の画像を維持し、より簡潔で改善された説明も提供します

以上がjQuery出力アレイはランダムな順序での詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。