Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีใช้วิธี Ruby Uniq เพื่อลบรายการที่ซ้ำกัน

ด้วย 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! วิธีใช้งาน เหตุใดจึงมีประโยชน์ และทำงานอย่างไร

ตอนนี้ฝึกด้วยวิธีนี้เพื่อให้จำมันได้

ขอบคุณสำหรับการอ่าน!