วิธีที่ง่ายที่สุดในการตรวจสอบว่ามีคีย์อยู่ในวัตถุหรือไม่โดยใช้ CoffeeScript


110

ใน CoffeeScript วิธีใดที่ง่ายที่สุดในการตรวจสอบว่ามีคีย์อยู่ในวัตถุหรือไม่

คำตอบ:


183
key of obj

นี้จะรวบรวม key in objJavaScript (CoffeeScript ใช้ofเมื่ออ้างถึงคีย์และinเมื่ออ้างถึงค่าอาร์เรย์: val in arrจะทดสอบว่าvalอยู่ในarrหรือไม่)

คำตอบของ thejh ถูกต้องหากคุณต้องการละเว้นต้นแบบของวัตถุ คำตอบของ Jimmy ถูกต้องหากคุณต้องการละเว้นคีย์ที่มี a nullหรือundefinedค่า


2
ส่วนใหญ่มีแนวโน้มผลงานมากเกินไปในการทดสอบown key of obj aditionally .hasOwnProperty()"เป็นไปได้มากที่สุด" มาจากการที่ฉันไม่ได้พยายาม แต่ไวยากรณ์นี้ทำงานในความเข้าใจ
แกะบิน

2
@flyingsheep ไม่มันใช้งานได้เฉพาะในความเข้าใจเท่านั้น ลองใช้: coffeescript.org/#try:own%20key%20of%20obj
Trevor Burnham

อาตกลง :own = (prop, obj) -> Object::hasOwnProperty.call obj, prop
แกะบิน

36

"?" ผู้ดำเนินการตรวจสอบการมีอยู่:

if obj?
    # object is not undefined or null

if obj.key?
    # obj.key is not undefined or null

# call function if it exists
obj.funcKey?()

# chain existence checks, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?.grandChildKey

# chain existence checks with function, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?().grandChildKey

16
สิ่งนี้จะล้มเหลวหากมีคีย์อยู่ แต่มีค่าเป็นnull.
สั้นเกินไป

ในกรณีที่ไม่มีใครสนใจคีย์ที่มีอยู่ แต่เป็นโมฆะก็obj.key?น่าจะรัดกุมที่สุด
Andrew Mao

21
obj.hasOwnProperty(name)

(เพื่อละเว้นคุณสมบัติที่สืบทอด)


ฉันชอบคำตอบนี้เพราะkey of objจะทำให้เกิดข้อผิดพลาดหากค่าเป็นสตริงหรือตัวเลข Cannot use 'in' operator to search. ในกรณีนี้ถ้าวัตถุไม่ได้กำหนดและไม่เป็นโมฆะมันจะทำงานได้
jqualls

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