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