Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จะค้นหาจำนวนเต็มที่ปรากฏเป็นจำนวนคี่ในอาร์เรย์ JavaScript ได้อย่างไร


เราได้รับอาร์เรย์ของจำนวนเต็มและบอกว่าองค์ประกอบทั้งหมดปรากฏเป็นจำนวนคู่ยกเว้นองค์ประกอบเดียว งานของเราคือค้นหาองค์ประกอบนั้นในการวนซ้ำครั้งเดียว

ให้นี่คืออาร์เรย์ตัวอย่าง -

[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