如果第二個數組包含第一個數組的所有元素,則第一個數組是第二個數組的子集。因此,有時我們可能需要檢查一個數組是否是另一個數組的子集。
在本教程中,我們將學習使用三種不同的方法來檢查一個數組是否是另一個數組的子集。
使用 for 循環和 array.includes() 方法
用戶可以使用 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() 方法
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 的子集。
<html> <body> <h3>Using the <i>array.some() and array.indexOf() method</i> to check if one array is a subset of another.</h3> <p id="output"></p> <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> </body> </html>
登錄后復制
使用 array.every() 方法和 set()
如果每個元素都滿足回調函數返回的條件,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 檢查一個數組是否是另一個數組的子集?的詳細內容,更多請關注www.92cms.cn其它相關文章!