วันเสาร์ที่ 19 กรกฎาคม พ.ศ. 2557

ภาษา JavaScript ฉบับผู้เริ่มต้น part 12-1

: Arrays ที่น่าพิสมัย

>> ในที่สุดก็มาถึงโครงสร้างข้อมูลที่ซับซ้อนขึ้นอีกนิด แต่ไม่ได้ยากเกินจะเข้าใจ หลายคนรู้จักแล้ว หลายคนลืม หลายคนต้องเปิดตำราหรือเว็บเพื่อกระตุ้นหน่วยความจำ และหลายคนเพิ่งได้รู้รวมถึงผมด้วย ดังนั้นโอกาสนี้เราจะมาตอบสามคำถามที่ควรรู้เกี่ยวกับอาร์เรย์ (array) ครับ

1) อาร์เรย์คืออะไร?
2) อาร์เรย์สร้างอย่างไร?
3) อาร์เรย์ใช้อย่างไร?

>> อาร์เรย์คืออะไร?
ตอบ ของ่ายๆเลยนะครับ คือตัวแปรชุด มีเป็นชุด มีเป็นเซต เหมามาแบบยกชุด ตัวอย่างเช่น
- น้องซื้อซิมป๊ะ เนี่ยเบอร์ละยี่สิบบาท เหลือสิบเบอร์แล้วสวยๆทั้งนั้น จะเห็นว่าซิมโทรศัพท์ยกมาเป็นชุด อาจตั้งชื่อตัวแปรนี้ว่า sim มีจำนวนทั้งสิ้นสิบตัวแปร จึงเขียนเป็น sim1, sim2, sim3, ...sim10 เป็นต้น
- นี่พวกเรา! เพราะวันนี้เราจะมาลดความอ้วนกัน เรามีกันห้าคน ไหนบอกซิว่าก่อนลดใครมีน้ำหนักเท่าไรบ้าง จะเห็นว่าน้ำหนักยกมาเป็นชุด อาจตั้งชื่อตัวแปรนี้ว่า weight มีจำนวนทั้งสิ้นห้าตัวแปร จึงเขียนเป็น weight1, weight2, ...weight5

ดังนั้นอาร์เรย์ก็คือคอลเลคชันของ elements ที่แต่ละ element เอาไว้เก็บข้อมูลที่มีความสัมพันธ์ในทิศทางเดียวกัน เช่น เก็บเบอร์โทรศัพท์ทั้งหมดหรือเก็บค่าน้ำหนักทั้งหมด เป็นต้น

แต่จาวาสคริปต์ใจดีกว่านั้น คือให้อาร์เรย์ชื่อใดๆสามารถเก็บข้อมูลต่างชนิดกันได้ เราจะเอาเบอร์โทรศัพท์ไปเก็บรวมกับค่าน้ำหนักก็ยังได้ แล้วตั้งชื่อเก๋ๆว่า simAndWeight แบบนี้ก็ได้ ทว่าไม่แนะนำนะครับ เพราะมันเลอะเทอะเกินไป แยกเป็นประเภทๆจะดีกว่า

>> อาร์เรย์สร้างอย่างไร?
ตอบ จากตัวอย่างที่ยกมาข้างต้น ตัวแปร sim มีสิบตัว ตัวแปร weight อีกห้าตัว แต่ที่น่ากลัวคือในทางปฏิบัติจริงๆแล้วจำนวนอาจมากกว่านี้หลายเท่า กรี๊ด! (ใครจะมานั่งประกาศตัวแปรเป็นร้อยๆเป็นพันๆชื่อจริงไหม หรืออาจมี!?) ซึ่งเหล่านี้ควรถูกจัดการด้วยอาร์เรย์ด้วยวิธีการสร้างอาร์เรย์ดังนี้ครับ
- สร้างด้วย Array Literal
- สร้างด้วย Array Constructor

>> สร้างด้วย Array Literal
literal ก็คือค่าที่ใช้กำหนดให้กับตัวแปร เป็นตัวอักษร ตัวเลข เป็นสตริงหรืออื่นๆ โดยมีรูปแบบคือ
var arrayName = [ value1, value2, ..., valueN ];
ตัวอย่างเช่น
var sims = ["0843677455", "0893666451", "0815501956", "0893991999", "0873677454", "0819606857", "0890900090", "0831545678", "0821221222", "0800000000"];

>> สร้างด้วย Array Constructor
ก็เหมือนกับตอนประกาศตัวแปรชนิดออบเจ็กต์ครับ คือต้องมีคำสั่ง new มาร่วม โดยมีรูปแบบคือ
var arrayName = new Array( value1, value2, ..., valueN );
ตัวอย่างเช่น
var weights = new Array(60, 63, 75, 120, 40);

>> อาร์เรย์ใช้อย่างไร?
ตอบ ใช้ง่ายมากครับ เพียงใส่ตัวเลขที่เรียกว่า index ลงไประหว่างเครื่องหมาย [ และ ] ก็จะสามารถเข้าถึงค่าที่เก็บไว้ภายในตัวแปรอาร์เรย์นั้นๆได้เลย โดยมีกฎกติกาเพิ่มเติมมาเพียงเล็กน้อยเท่านั้น กล่าวคือค่าของ index ถูกกำหนดให้เริ่มต้นที่เลขศูนย์ ดังนั้น index ใดๆที่เราต้องการเข้าถึงจึงต้องลบด้วยหนึ่งเสมอ
ตัวอย่างเช่น
- พี่ค่ะ หนูอยากได้ซิมหมายเลข "0843677455" นั่นคือ sims[0]
- พี่ขา หนูขอดูเบอร์ "0893666451" หน่อยสิคะ นั่นคือ sims[1]
- พี่ๆ หยิบเบอร์ "0815501956" ให้ผมที นั่นคือ sims[2]
- น้องๆพี่เอาเบอร์ "0800000000" นั่นคือ sims[9]
- และถ้ามีกวนทีนขอซิมที่ไม่มีอยู่ในรายการ เช่นขอเบอร์ "0888888888" นั่นคืออ้างมั่ว ค่าที่ได้แทนที่จะเป็นหมายเลขโทรศัพท์ก็จะได้ undefined หรือกำปั้นนั่นเอง

>> หมายเหตุ อาร์เรย์นั้นไม่ว่าจะสร้างด้วยวิธี literal หรือ constructor ไม่มีความแตกต่างกัน ได้เป็นชนิดออบเจ็กต์ทั้งคู่ สามารถหดยืดขนาดได้อัตโนมัติซึ่งจะขอยกไปเล่ายัง part ต่อไป สวัสดีครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น