ด้วย uniq
วิธีที่คุณสามารถลบองค์ประกอบที่ซ้ำกันทั้งหมดออกจากอาร์เรย์ได้
มาดูกันว่ามันทำงานอย่างไร!
ถ้าคุณมีอาร์เรย์แบบนี้ :
n = [1,1,1,2,3,4,5]
โดยที่หมายเลข 1
ซ้ำกัน
กำลังเรียก uniq
ในอาร์เรย์นี้จะลบรายการพิเศษออกและส่งกลับอาร์เรย์ใหม่ที่มีตัวเลขไม่ซ้ำกัน
ตัวอย่าง :
n.uniq # [1,2,3,4,5]
ขอให้สังเกตว่า uniq
จะไม่เปลี่ยน n
(อาร์เรย์เดิม) เราจึงต้องเรียก uniq!
หรือเพื่อบันทึกอาร์เรย์ใหม่
ตัวอย่าง :
unique_numbers = n.uniq
ค่อนข้างง่ายใช่มั้ย
แต่หลายคนไม่รู้ว่า uniq
เข้าบล็อก
ด้วยการบล็อก คุณสามารถทำขั้นสูง สิ่งต่างๆ
ให้ฉันอธิบาย…
วิธีใช้วิธี Ruby Uniq กับบล็อก
เมื่อคุณเรียก uniq
มันทำงานโดยสร้างแฮชจากองค์ประกอบอาร์เรย์ของคุณ
ทุกองค์ประกอบจะกลายเป็นกุญแจสำคัญในการแฮช
เนื่องจากแฮชคีย์มีเอกลักษณ์เฉพาะ เราสามารถรับรายการคีย์ทั้งหมดในแฮช รายการนี้จึงกลายเป็นอาร์เรย์ใหม่ของเราที่มีองค์ประกอบเฉพาะ
ตอนนี้ :
หากคุณต้องการเปลี่ยนสิ่งที่ทำให้บางอย่างไม่เหมือนใคร คุณสามารถผ่านการบล็อก
นี่คือตัวอย่าง :
fruits = %w(orange apple banana)
“ส้ม” และ “กล้วย” มีความยาวเท่ากัน 6 ตัวอักษร
ถ้าเราใช้ uniq
แบบนี้ :
fruits.uniq(&:size) # ["orange", "apple"]
จากนั้นเราปล่อย “banana” เพราะมันจะซ้ำกันเมื่อเราเปรียบเทียบสตริงตามขนาดของมัน
ตัวอย่างอื่น :
objects = [1, 2, "a", "b", :c, :d] objects.uniq(&:class)
สิ่งนี้ทำให้คุณได้รับอาร์เรย์ที่มีอ็อบเจ็กต์ที่ไม่ซ้ำกันตามคลาส:
[1, "a", :c]
คุณเห็นพลังของสิ่งนี้ไหม
เมื่อคุณส่งบล็อกไปยัง uniq
คุณสามารถกำหนดได้อย่างแม่นยำว่ากฎเกณฑ์ใดที่ถือว่าไม่ซ้ำกัน
วิธีใช้ Uniq ที่มีหลายเงื่อนไข
คุณสามารถใช้ได้หลายเงื่อนไข!
ตามนี้ :
สมมติว่าคุณมี User
คลาสด้วย:
age
name
country
คุณต้องการเพียงหนึ่งคนต่อประเทศที่อายุเท่ากัน
ง่ายด้วยบล็อก :
[david, petter, raphael].uniq { |person| [person.age, person.country] }
ด้วยรหัสนี้ เงื่อนไขทั้งสองต้องตรงกันก่อนจึงจะถือว่าบางอย่างไม่ซ้ำกัน
วิธีนี้ทำงานอย่างไร
หากไม่มีบล็อก วัตถุจะกลายเป็นคีย์แฮช
ด้วยบล็อก ค่าที่ได้จะกลายเป็นแฮชคีย์ และอ็อบเจ็กต์จะกลายเป็นค่าแฮช
แล้ว…
Ruby รับค่าและส่งกลับเป็นอาร์เรย์ใหม่
นี่เป็นเพียงรายละเอียดการใช้งาน แต่ฉันพบว่าน่าสนใจมาก เลยคิดว่าจะแชร์กับคุณ
สรุป
คุณได้เรียนรู้เกี่ยวกับ uniq
วิธีการใน Ruby! วิธีใช้งาน เหตุใดจึงมีประโยชน์ และทำงานอย่างไร
ตอนนี้ฝึกด้วยวิธีนี้เพื่อให้จำมันได้
ขอบคุณสำหรับการอ่าน!