ค้นหาว่าตัวแปรหารด้วย 2 ได้หรือไม่


128

ฉันจะทราบได้อย่างไรว่าตัวแปรหารด้วย 2 ได้หรือไม่ นอกจากนี้ฉันต้องทำฟังก์ชันถ้าเป็นและทำหน้าที่อื่นถ้าไม่ใช่


6
@SilentGhost: ทุกวันนี้คนได้รับการบ้าน jQuery จริงๆหรือ
Andy E

4
ไม่รู้เกี่ยวกับแอนดี้คนนั้น แต่ผู้คนก็รู้วิธีที่จะทำให้แท็กยุ่งเหยิง
SilentGhost

2
@OP: jQuery ไม่ใช่คำตอบสำหรับทุกสิ่งที่คุณอาจต้องการทำใน JavaScript;)
Mike Atlas

8
@ ไมค์ผิด! คุณควรใช้ปลั๊กอินคณิตศาสตร์พื้นฐาน jQuery สำหรับสิ่งนั้น! นั่นคือวิธีที่จะไป ... : P (Irony)
Pablo Cabrera

คำตอบ:


312

ใช้โมดูลัส:

// Will evaluate to true if the variable is divisible by 2
variable % 2 === 0  

30
รักเลย! ง่ายง่ายและคุณไม่ได้ทำให้ฉันรู้สึกว่าเป็นคนงี่เง่าที่ถามคำถาม ... ซึ่ง (สำหรับคนอื่น ๆ ที่ยังไม่รู้) เป็นเรื่องใหญ่สำหรับนักพัฒนา jQuery / Javascript ใหม่
sadmic ไมโครเวฟ

6
@sadmic ไมโครเวฟ: เราทุกคนเริ่มต้นจากการเป็นผู้เริ่มต้นในบางจุด ปัญหาที่แท้จริงคือการขาดบทเรียนที่ให้ข้อมูลที่นั่น แบบฝึกหัดสำหรับผู้เริ่มต้นอย่างแท้จริงควรอธิบายความแตกต่างระหว่าง JavaScript และ jQuery และพวกเขาก็เจาะลึกลงไปในเนื้อหา jQuery
Andy E

3
รหัสแรกที่ฉันเขียนคือใน JavaScript และนั่นคือป๊อปอัปกล่องการแจ้งเตือน "ยินดีต้อนรับ" ปีคือปี 1997 และสำหรับหน้าแรกของ Geocities ของฉัน แน่นอนเราทุกคนเริ่มต้นที่ไหนสักแห่ง (แม้ว่าการฝึกอบรมอย่างเป็นทางการบางอย่างก็ช่วยได้เช่นกัน)
Mike Atlas

ไม่ควรเป็น: ตัวแปร% 2 == 0 ให้ความรู้ฉันถ้าฉันผิด
Sean Tank Garvey

28

อย่างจริงจังไม่มีปลั๊กอิน jQuery สำหรับการตรวจสอบคี่ / คู่?

ไม่ใช่อีกต่อไป - ปล่อย "Oven" ปลั๊กอิน jQuery ภายใต้ใบอนุญาต MIT เพื่อทดสอบว่าตัวเลขที่ระบุเป็นคี่ / คู่หรือไม่

ซอร์สโค้ดมีอยู่ที่http://jsfiddle.net/7HQNG/

ทดสอบชุดทดสอบได้ที่http://jsfiddle.net/zeuRV/

(function() {
    /*
     * isEven(n)
     * @args number n
     * @return boolean returns whether the given number is even
     */
    jQuery.isEven = function(number) {
        return number % 2 == 0;
    };

    /* isOdd(n)
     * @args number n
     * @return boolean returns whether the given number is odd
     */
    jQuery.isOdd = function(number) {
        return !jQuery.isEven(number);
    };
})();​

7
ว้าว. ตลกดี แต่คุณรู้ไหมว่ามีคนใช้สิ่งนี้จริง ๆ ?
Tim Down

7
@ Tim Down: ฉันสงสัยว่ามีใครใช้ปลั๊กอินเลขคณิตพื้นฐานของ jQueryหรือไม่? ถัดไปในรายการเครื่องกำเนิดตัวเลขสุ่ม jQuery ;-)
Andy E

9
มีมากที่ jQuery สามารถทำเช่นตัวแปรการสร้างฟังก์ชั่นอื่น ๆ ที่ยังคงมีการทำกับJavaScript ดิบ ไม่น่าเชื่อเลย ;-)
Anurag

4
@Andy - ROFL ที่ลิงก์นั้นและรูปภาพ SO - doxdesk.com/img/updates/20091116-so-large.gifฉันเดาว่าคำตอบ "ใช้ jQuery" จะไปถึง Javascript ที่สูงตลอดเวลาในขณะนี้ :)
Anurag

คุณมีเอกสารคำอธิบายใช้ฉันไหม @Anurag
Todd


11

คุณสามารถใช้ตัวดำเนินการโมดูลัสแบบนี้ได้โดยไม่จำเป็นต้องใช้ jQuery เพียงแค่แทนที่alertsด้วยรหัสของคุณ

var x = 2;
if (x % 2 == 0)
{
  alert('even');
}
else
{
  alert('odd')
}

11

คุณสามารถทำได้ดีกว่า (เร็วกว่าตัวดำเนินการโมดูโลถึง 50%):

คี่: x & 1 คู่:! (x & 1)

อ้างอิง: JavaScript ประสิทธิภาพสูง, 8. -> ตัวดำเนินการ Bitwise


นี่เป็นคำตอบที่ดีและเป็นคำตอบที่ดีที่สุด อย่างไรก็ตามต้องมีความรู้เกี่ยวกับ Bitwise Operators ..
Sean Tank Garvey


4
var x = 2;
x % 2 ? oddFunction() : evenFunction();

ฉันคิดว่ารหัสนี้ไม่ถูกต้อง / มีข้อบกพร่อง คุณกำลังประกาศค่าสำหรับตัวแปร x (โดยเฉพาะทำให้ x เท่ากับตัวเลข 2 เสมอ) .. ข้อผิดพลาดแรก จากนั้นบรรทัดถัดไปของคุณเพียงแค่บอกว่าถ้าตัวแปร x สามารถหารด้วย 2 ได้จากนั้นให้ทำ oddFunction, else / if-not ทำ evenFunction ... ปัญหาของวิธีนี้คือมันจะสร้าง evenFunction เสมอ - ไม่เคยเป็น oddFunction นั่นคือปัญหา / ข้อผิดพลาดอื่น กรุณาให้ความรู้ฉันถ้าฉันผิด
Sean Tank Garvey


2

หวังว่านี่จะช่วยได้

let number = 7;

if(number%2 == 0){      

  //do something;
  console.log('number is Even');  

}else{

  //do otherwise;
  console.log('number is Odd');

}

นี่คือฟังก์ชันที่สมบูรณ์ที่จะเข้าสู่คอนโซลความเท่าเทียมกันของอินพุตของคุณ

const checkNumber = (x) => {
  if(number%2 == 0){      

    //do something;
    console.log('number is Even');  

  }else{

    //do otherwise;
    console.log('number is Odd');

  }
}

1

โปรดเขียนรหัสต่อไปนี้ในคอนโซลของคุณ:

var isEven = function(deep) {

  if (deep % 2 === 0) {
        return true;  
    }
    else {
        return false;    
    }
};
isEven(44);

โปรดทราบ:มันจะส่งคืนจริงหากหมายเลขที่ป้อนเป็นเท็จ


1
ขอบคุณสำหรับคำตอบ แต่โดยพื้นฐานแล้วนี่เหมือนกับคำตอบที่ได้รับการยอมรับคุณเพียงแค่รวมไว้ในฟังก์ชัน ยังไงก็ขอบคุณสำหรับการมีส่วนร่วม
sadmic ไมโครเวฟ

1

ใช้ Modulus แต่ .. คำตอบที่ยอมรับข้างต้นไม่ถูกต้องเล็กน้อย ฉันเชื่อว่าเนื่องจาก x เป็นประเภท Number ใน JavaScript ซึ่งตัวดำเนินการควรเป็นการกำหนดสองครั้งแทนที่จะเป็นการกำหนดสามครั้งดังนี้:

x % 2 == 0

อย่าลืมประกาศตัวแปรของคุณด้วยดังนั้นเห็นได้ชัดว่าไม่สามารถเขียนบรรทัดแบบสแตนด์อโลนได้ :-) มักจะใช้เป็นifคำสั่ง หวังว่านี่จะช่วยได้


-2

อาร์เรย์ = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

อาร์เรย์แต่ละ {| x | ทำให้ x ถ้า x% 2 == 0}

ทับทิม: D

2 4 6 8 10


1
คุณเดินจาก 4chan?
ทอดด์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.