Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การลดสมาชิกอาร์เรย์ให้เป็นเลขคี่ทั้งหมดใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ ฟังก์ชันควรเปลี่ยนตัวเลขในอาร์เรย์ดังนี้:

  • ถ้าตัวเลขเป็นคี่ ให้คงค่าเดิม
  • ถ้าตัวเลขเป็นคู่ ให้ลบ 1

และคืนค่าอาร์เรย์ใหม่

ตัวอย่าง

โค้ดตัวอย่างด้านล่าง:

const arr = [5, 23, 6, 3, 66, 12, 8];
const reduceToOdd = (arr = []) => {
  const res = [];
  for (let i = 0; i < arr.length; i++) {
    const el = arr[i];
    if (el % 2 === 1) {
      res.push(el);
    } else {
      res.push(el - 1);
    }
  }
  return res;
};
console.log(reduceToOdd(arr));

ผลลัพธ์

[ 5, 23, 5, 3, 65, 11, 7 ]

คำอธิบายเพิ่มเติม

ทำให้ทุกตัวเป็นเลขคี่โดยลบ 1 จากเลขคู่ สามารถเขียนสั้นได้ด้วย `arr.map(x => x % 2 === 0 ? x - 1 : x)` หรือ `arr.map(x => x | 1)` (bitwise OR กับ 1 ทำให้เป็นคี่เสมอ)