はじめに
この実験では、JavaScript における配列の順列の概念を探ります。重複する要素が含まれていても、配列の要素のすべての可能な順列を生成するために再帰をどのように使用するかを学びます。また、map()
や reduce()
などの配列メソッドを使って、異なる順列を単一の配列に結合する方法も理解します。ただし、8 から 10 個以上の要素を持つ配列に対してこの関数を実行すると、実行時間が大幅に増加し、ブラウザが停止する可能性があることに留意する必要があります。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、JavaScript における配列の順列の概念を探ります。重複する要素が含まれていても、配列の要素のすべての可能な順列を生成するために再帰をどのように使用するかを学びます。また、map()
や reduce()
などの配列メソッドを使って、異なる順列を単一の配列に結合する方法も理解します。ただし、8 から 10 個以上の要素を持つ配列に対してこの関数を実行すると、実行時間が大幅に増加し、ブラウザが停止する可能性があることに留意する必要があります。
コーディングを練習するには、ターミナル/SSH を開き、node
と入力します。
ここに、配列の要素のすべての順列(重複する要素が含まれていても)を生成するアルゴリズムがあります。これを実装するには、次の手順に従ってください。
Array.prototype.map()
を使用して要素と各部分順列を結合し、次に Array.prototype.reduce()
を使用してすべての順列を 1 つの配列に結合します。2
または 1
の配列です。コードは次のとおりです。
const permutations = (arr) => {
if (arr.length <= 2) return arr.length === 2 ? [arr, [arr[1], arr[0]]] : arr;
return arr.reduce(
(acc, item, i) =>
acc.concat(
permutations([...arr.slice(0, i), ...arr.slice(i + 1)]).map((val) => [
item,
...val
])
),
[]
);
};
permutations()
関数に配列引数を渡してコードをテストできます。
permutations([1, 33, 5]);
// [ [1, 33, 5], [1, 5, 33], [33, 1, 5], [33, 5, 1], [5, 1, 33], [5, 33, 1] ]
おめでとうございます!あなたは配列の順列の実験を完了しました。あなたのスキルを向上させるために、LabEx でさらに実験を練習することができます。