如果第二個陣列包含第一個陣列的所有元素,則第一個陣列是第二個陣列的子集。因此,有時我們可能需要檢查一個陣列是否是另一個陣列的子集。
在本教程中,我們將學習使用三種不同的方法來檢查一個陣列是否是另一個陣列的子集。
使用者可以使用 for 迴圈來迭代第一個陣列的每個元素。之後,他們可以使用includes()方法來檢查第二個陣列是否包含第一個陣列的每個元素。
如果第二個陣列包含第一個陣列的所有元素,則第一個陣列是第二個陣列的子集。
使用者可以依照下面的語法使用for迴圈和includes()方法來決定一個陣列是否是另一個陣列的子集。
for (let ele of array1) { if (!array2.includes(ele)) { return false; } }
在上面的語法中,我們檢查 array1 是否是 array2 的子集。
第 1 步 - 我們將檢查 array1 是否是 array2 的子集。
第 2 步 - 使用 for-of 迴圈遍歷陣列的每個元素。
第3 步驟 - 使用array.includes() 方法檢查array1 的每個元素是否包含在陣列2。
步驟 4 - 如果 array1 中的任何單一元素未包含在 array2 中,則傳回 false。
步驟5 - 如果array2 包含array1 的所有元素,for-loop 迭代將成功並傳回true 。
我們在下面的範例中建立了包含不同數值的三個陣列。我們建立了 isSubset() 函數,它接受兩個陣列作為參數。此函數檢查 array1 是否為 array2 的子集,並根據該結果傳回布林值。
我們正在檢查 array2 和 array3 是否是 array1 的子集。用戶可以在輸出中觀察結果。
<html> <body> <h3>Using the <i>for loop and includes() method</i> to determine if one array is a subset of another array.</h3> <p id = "output"> </p> <script> let output = document.getElementById("output"); let array1 = [10, 20, 30, 40, 50, 60, 70, 80, 90]; let array2 = [20, 30, 70, 80]; let array3 = [20, 43, 45]; function isSubset(array1, array2) { // Iterating through all the elements of array1 for (let ele of array1) { // check if array2 contains the element of array1 if (!array2.includes(ele)) { output.innerHTML += "The " + array1 + " is not a subset of " + array2 + "<br>"; return false; } } output.innerHTML += "The " + array1 + " is a subset of " + array2 + "<br>"; // If array1 contains all elements of array2 return true return true; } isSubset(array2, array1); isSubset(array3, array1) </script> </body> </html>
array.some() 方法採用回呼函數作為參數,該函數根據滿足條件的引用數組的至少一個元素返回布林值。
array.indexOf() 方法傳回元素的索引(如果該元素存在於陣列中);否則,傳回-1。因此,如果我們發現第一個數組中的任何元素在第二個數組中的索引為 -1,則表示第一個數組不是第二個數組的子集。
使用者可以依照下面的語法使用 array.some() 和 array.indexOf() 方法來檢查一個陣列是否是另一個陣列的子集。
let isSubset = !data2.some((string) => data1.indexOf(string) == -1);
在上述語法中,如果 some() 方法傳回 true,則 data1 陣列不是 data2 的子集。因此,我們將其相反的布林值儲存在 isSubset 變數中。
下面的範例包含兩個字串數組,並檢查 data1 陣列是否是 data2 陣列的子集。 data1 陣列包含 data2 的所有元素。因此,使用者可以在輸出中看到 data2 陣列是 data1 的子集。
Using the array.some() and array.indexOf() method to check if one array is a subset of another.
<script> let output = document.getElementById("output"); let data1 = ["Hello", "Hi", "Users"]; let data2 = ["Hello", "Users"]; let isSubset = !data2.some((string) => data1.indexOf(string) == -1); if (isSubset) { output.innerHTML += "The " + data2 + " is a subset of " + data1 + " array. <br>"; } else { output.innerHTML += "The " + data2 + " is not a subset of " + data1 + " array. <br>"; } </script>
如果每個元素都滿足回呼函數傳回的條件,array.every() 方法將傳回 true。
我們可以建立所有陣列元素的set(),因為該集合包含唯一的陣列元素。
依照下面的語法使用 set 和 every() 方法。
let setOfArray = new Set(num1); let result = num2.every(num => setOfArray.has(num));
在下面的範例中,我們建立了 num1 陣列的所有元素的集合。之後,我們使用 javascript set 的 has() 方法檢查 set 是否包含 num2 陣列的每個元素。
<html> <body> <h3>Using the <i>array.every() method and set</i> to check if one array is a subset of another array.</h3> <p id="output"></p> <button onclick="checkForSubset()">Check for subset</button> <script> let output = document.getElementById("output"); let num1 = [45, 65, 45, true, false, 45, 43, 32]; let num2 = [false, true, false, true]; function checkForSubset() { // create a set of the parent array let setOfArray = new Set(num1); // Check if every element of the child array is in the set of the parent array let result = num2.every(num => setOfArray.has(num)); if (result) { output.innerHTML += "The " + num2 + " is a subset of " + num1 + " array. <br>"; } else { output.innerHTML += "The " + num2 + " is not a subset of " + num1 + " array. <br>"; } } </script> </body> </html>
以上是如何使用 JavaScript 檢查一個陣列是否是另一個陣列的子集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!