JavaScript程式查詢重複陣列中缺失的元素
我們需要編寫一個JavaScript程式來識別重複陣列中缺失的元素。程式的輸入將是一個包含重複元素的陣列,只有一個元素缺失。程式應該能夠識別缺失的元素並將其作為輸出返回。
解決這個問題的先決條件需要了解JavaScript陣列以及如何操作它們來查詢缺失的元素。我們必須開發一個高效的程式,能夠處理包含許多重複元素的大型陣列。
問題陳述
我們有兩個陣列,它們彼此重複,只有一個元素除外,即其中一個數組中缺少一個元素,我們需要找到這個缺失的元素。
示例
給出以下兩個陣列:
輸入
[1, 2, 3, 4, 5, 6] [1, 3, 4, 5, 6]
輸出
2
第二個陣列中缺失的元素是 2。我們需要找到這個缺失的元素。
示例
給出以下兩個陣列:
輸入
['a', 'b', 'c', 'd', 'e'] ['a', 'c', 'd', 'e']
輸出
b
第二個陣列中缺失的元素是 b。我們需要找到這個缺失的元素。
現在我們將研究一些解決上述問題的方法。
方法一:使用for迴圈
在這種方法中,我們將迭代第一個陣列中的元素,並檢查它們是否存在於第二個陣列中。如果一個元素不存在於第二個陣列中,那麼它就是我們缺失的元素。
演算法
初始化一個變數來儲存缺失的元素。
遍歷第一個陣列。
對於第一個陣列中的每個元素,使用巢狀迴圈檢查它是否存在於第二個陣列中。
如果該元素不存在於第二個陣列中,則將其賦值給缺失元素變數並退出巢狀迴圈。
返回缺失的元素。
示例
<!DOCTYPE html>
<html>
<body>
<h2>Find the Missing Element in a Duplicated Array</h2>
<div id="arrays"></div>
<br>
<div id="output"></div>
<script>
function findMissingElementUsingForLoop(arr1, arr2) {
let missingElement;
for (let i = 0; i < arr1.length; i++) {
let found = false;
for (let j = 0; j < arr2.length; j++) {
if (arr1[i] === arr2[j]) {
found = true;
break;
}
}
if (!found) {
missingElement = arr1[i];
break;
}
}
return missingElement;
}
const arr1 = [1, 2, 3, 4, 5, 6];
const arr2 = [1, 3, 4, 5, 6];
const arraysDiv = document.getElementById("arrays");
arraysDiv.innerHTML = `Array 1: ${arr1.join(", ")}<br>Array 2: ${arr2.join(", ")}`;
const missingElement = findMissingElementUsingForLoop(arr1, arr2);
document.getElementById("output").innerHTML = `The missing element is: ${missingElement}`;
</script>
</body>
</html>
方法二:使用Filter和IndexOf函式
在這種方法中,我們將使用filter函式查詢不在兩個陣列中的元素,然後使用indexOf函式返回該元素。
演算法
定義一個函式`findMissingElementUsingFilterAndIndexOf`,它接受兩個陣列作為輸入。
使用filter函式建立一個新陣列,其中包含arr1中所有不在arr2中的元素。
使用indexOf函式返回新陣列中的第一個元素。
示例
<!DOCTYPE html>
<html>
<body>
<h2>Find the Missing Element in a Duplicated Array</h2>
<div id="arrays"></div>
<br>
<div id="output"></div>
<script>
function findMissingElementUsingFilterAndIndexOf(arr1, arr2) {
const diffArr = arr1.filter(element => !arr2.includes(element));
return diffArr[0];
}
const arr1 = [11, 22, 33, 44, 55, 66];
const arr2 = [11, 33, 44, 55, 66];
const arraysDiv = document.getElementById("arrays");
arraysDiv.innerHTML = `Array 1: ${arr1.join(", ")}<br>Array 2: ${arr2.join(", ")}`;
const missingElement = findMissingElementUsingFilterAndIndexOf(arr1, arr2);
document.getElementById("output").innerHTML = `The missing element is: ${missingElement}`;
</script>
</body>
</html>
方法三:使用Reduce函式
在這種方法中,我們將使用reduce函式查詢兩個陣列中所有元素的總和。然後,我們將從第一個陣列的總和中減去第二個陣列的總和,以獲得缺失的元素。
演算法
定義一個函式**`findMissingElementUsingReduce`**,它接受兩個陣列作為輸入。
對第一個陣列使用**`reduce`**函式來查詢所有元素的總和,並將其賦值給變數**`sum1`**。
對第二個陣列使用**`reduce`**函式來查詢所有元素的總和,並將其賦值給變數**`sum2`**。
從**`sum1`**中減去**`sum2`**以獲得缺失的元素。
返回缺失的元素。
示例
<!DOCTYPE html>
<html>
<body>
<h2>Find the Missing Element in a Duplicated Array</h2>
<div id="arrays"></div>
<br>
<div id="output"></div>
<script>
function findMissingElementUsingReduce(arr1, arr2) {
const sum1 = arr1.reduce((acc, curr) => acc + curr, 0);
const sum2 = arr2.reduce((acc, curr) => acc + curr, 0);
const missingElement = sum1 - sum2;
return missingElement;
}
const arr1 = [121, 122, 123, 124, 125, 126];
const arr2 = [121, 123, 124, 125, 126];
const arraysDiv = document.getElementById("arrays");
arraysDiv.innerHTML = `Array 1: ${arr1.join(", ")}<br>Array 2: ${arr2.join(", ")}`;
const missingElement = findMissingElementUsingReduce(arr1, arr2);
document.getElementById("output").innerHTML = `The missing element is: ${missingElement}`;
</script>
</body>
</html>
方法四:使用Set物件
這是我們最後一種方法,可以編寫一個程式碼來查詢重複陣列中缺失的元素。在這裡,我們可以從其中一個數組建立一個新的Set物件,然後檢查另一個數組中的每個元素是否存在於Set中。如果一個元素不存在於Set中,那麼它一定是缺失的元素。
演算法
從其中一個數組建立一個新的Set物件。
遍歷另一個數組,並檢查每個元素是否存在於Set中。
如果一個元素不存在於Set中,那麼它就是缺失的元素。
返回缺失的元素。
示例
<!DOCTYPE html>
<html>
<body>
<h2>Find the Missing Element in a Duplicated Array</h2>
<div id="arrays"></div>
<br>
<div id="output"></div>
<script>
function findMissingElementUsingSet(arr1, arr2) {
const set = new Set(arr2);
for (let element of arr1) {
if (!set.has(element)) {
return element;
}
}
return null;
}
const arr1 = [134, 234, 334, 434, 534, 634];
const arr2 = [134, 334, 434, 534, 634];
const arraysDiv = document.getElementById("arrays");
arraysDiv.innerHTML = `Array 1: ${arr1.join(", ")}<br>Array 2: ${arr2.join(", ")}`;
const missingElement = findMissingElementUsingSet(arr1, arr2);
const outputDiv = document.getElementById("output");
if (missingElement !== null) {
outputDiv.innerHTML = `The missing element is: ${missingElement}`;
} else {
outputDiv.innerHTML = "There is no missing element in the arrays.";
}
</script>
</body>
</html>
結論
在這篇部落格中,我們討論了四種從重複陣列中查詢缺失元素的方法,分別是使用for迴圈、使用reduce函式、使用set物件和使用Filter和IndexOf函式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP