เราได้รับอาร์เรย์ของจำนวนเต็มและบอกว่าองค์ประกอบทั้งหมดปรากฏเป็นจำนวนคู่ยกเว้นองค์ประกอบเดียว งานของเราคือค้นหาองค์ประกอบนั้นในการวนซ้ำครั้งเดียว
ให้นี่คืออาร์เรย์ตัวอย่าง -
[1, 4, 3, 4, 2, 3, 2, 7, 8, 8, 9, 7, 9]
ก่อนที่จะลองแก้ไขปัญหานี้ เราต้องเข้าใจเล็กน้อยเกี่ยวกับตัวดำเนินการ XOR (^) ระดับบิต
ตัวดำเนินการ XOR ส่งคืนค่า TRUE ถ้าตัวถูกดำเนินการทั้งสองเป็นส่วนเสริมซึ่งกันและกัน และคืนค่า FALSE หากตัวถูกดำเนินการทั้งสองเหมือนกัน
ตารางความจริงของตัวดำเนินการ XOR () -
0 ^ 0 → 0 0 ^ 1 → 1 1 ^ 0 → 1 1 ^ 1 → 0
หากเราตรวจสอบพฤติกรรมนี้อย่างใกล้ชิด เราจะสังเกตได้ว่าเมื่อใช้ตัวดำเนินการ XOR กับค่าที่เหมือนกันทุกประการ (เช่น 12^12) จะส่งกลับ FALSE หรือ 0 เสมอ กล่าวอีกนัยหนึ่ง สามารถใช้ลบค่าที่ทำให้ปรากฏเป็นจำนวนคู่ได้ . และนั่นคือสิ่งที่เราต้องการ
ดังนั้น ให้เขียนโค้ดข้างล่างนี้เหมือนกัน -
ตัวอย่าง
const sampleArray = [1, 4, 3, 4, 2, 3, 2, 7, 8, 8, 9, 7, 9]; console.log(sampleArray.reduce((a, b) => a ^ b));
มันวนซ้ำในแต่ละองค์ประกอบและลบล้างองค์ประกอบที่มีลักษณะคู่และส่งคืนองค์ประกอบเดียวที่ปรากฏเป็นจำนวนคี่เท่านั้น
ผลลัพธ์
เอาต์พุตคอนโซลจะเป็น −
1