List.FirstN จะคืน List ใหม่ที่มีสมาชิก N ตัวแรกจาก List ต้นฉบับ สามารถระบุจำนวน N ด้วยตัวเลข หรือกำหนดเป็นฟังก์ชันเงื่อนไขเพื่อให้ดึงสมาชิกที่ตรงเงื่อนไขจากจุดเริ่มต้นไปเรื่อยๆ จนกว่าเงื่อนไขจะไม่เป็นจริง
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| list | list | List ที่ต้องการดึงสมาชิก |
| countOrCondition | number | function | จำนวนสมาชิกที่ต้องการดึง (number) หรือฟังก์ชันเงื่อนไขแบบ each (เช่น each _ > 5) |
List.FirstN ใช้สำหรับดึงสมาชิกตัวแรกจากลิสต์ในสองโหมดการทำงาน: แบบนับจำนวน (ระบุตัวเลข) หรือแบบเงื่อนไข (ใช้ each)
ส่วนตัวผมใช้ List.FirstN บ่อยๆ ตอนต้องการตัวอย่างข้อมูล หรือตัดหัวตารางออก เพราะมันดึงแค่ตัวแรกที่ตรงเงื่อนไขเท่านั้น ไม่ได้ดึงทั้ง List ทำให้ประหยัด performance ได้นะ 😎
อันที่เจ๋งคือ ถ้าใช้เงื่อนไข มันจะหยุดตรงที่เจอค่าไม่ตรง เลยไม่ต้องประมวลผลทั้ง List
เลือกรายการสินค้า 5 อันดับแรกที่มีมูลค่าสูงสุด (ใช้ List.Sort ก่อน)
ถ้าข้อมูลมีบรรทัดที่ไม่ใช่หัวตาราง สามารถใช้ List.Skip หรือ List.FirstN มาช่วย
ดึงข้อมูลเพียงไม่กี่รายการแรกมาแสดงเพื่อตรวจสอบความถูกต้องเบื้องต้น
ดึง 2 สมาชิกแรกจาก {1, 2, 3, 4, 5}
ดึงสมาชิกจากหน้าตราบใดที่ยังมากกว่า 5 หยุดตอนเจอ 5
ดึงบรรทัดทั้งหมดที่ขึ้นต้นด้วย 'Header' จนกว่าจะเจอ 'Data'
List.First ดึงแค่สมาชิก 1 ตัวแรก (คืนค่าเดี่ยว) ส่วน List.FirstN ดึง N ตัวแรก (คืนค่า List)
มันจะคืน List ทั้งหมด ไม่มี error ถ้า List มี 3 ตัว แล้วขอ 10 ตัว มันจะคืน 3 ตัวทั้งหมด
ใช่ แบบเงื่อนไขหยุดทีแรกที่เจอค่าไม่ตรง ส่วนแบบนับต้องนับครบ N ตัว
List.Select ดึงทั้ง List ที่ตรงเงื่อนไข ส่วน List.FirstN หยุดตรงแรกที่ไม่ตรง ประหยัด performance
ฟังก์ชันที่ผู้เขียนโยงไว้กับ List.FirstN จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
List.Accumulate เป็นฟังก์ชันสำหรับการวนลูปผ่านแต่ละ element ใน list พร้อมทั้งเก็บสถานะสะสมไว้ตลอดการทำงาน
.
โดยจะเริ่มต้นจากค่าเริ่มต้นที่กำหนด (seed value) และในแต่ละรอบของการวนลูป ฟังก์ชันจะส่งค่าสถานะปัจจุบัน (current state) พร้อมกับ element ปัจจุบันเข้าไปใน accumulator function ที่คุณกำหนดขึ้นมา เพื่อคำนวณและสร้างสถานะใหม่สำหรับรอบถัดไป
.
เมื่อวนลูปครบทุก element แล้ว ฟังก์ชันจะคืนค่าสถานะสุดท้ายกลับมา เหมาะสำหรับการคำนวณยอดสะสม (running totals) การรวมแบบกำหนดเอง (custom aggregations) และการสร้างรูปแบบ For-Next loop pattern ใน M language ครับ
List.Alternate ใช้สร้าง List ใหม่โดยการสลับระหว่างการข้าม (Skip) และการเก็บ (Take) สมาชิกจาก List ต้นฉบับ สามารถกำหนดจำนวนที่จะข้าม จำนวนที่จะเก็บ และจุดเริ่มต้นได้
List.First ใช้เพื่อดึงค่าสมาชิกตัวแรกจาก List หากเอา List ว่างเปล่า ให้ใช้ค่า Default ปกป้อง
List.LastN จะคืน List ใหม่ที่มีสมาชิก N ตัวสุดท้ายจาก List ต้นฉบับ สามารถระบุจำนวน N ด้วยตัวเลข หรือกำหนดเป็นฟังก์ชันเงื่อนไขเพื่อให้ดึงสมาชิกที่ตรงเงื่อนไขจากจุดสิ้นสุดย้อนกลับไปเรื่อยๆ จนกว่าเงื่อนไขจะไม่เป็นจริง
List.Range ดึงช่วงของสมาชิกจาก List โดยระบุตำแหน่งเริ่มต้น (offset) และจำนวนสมาชิกที่ต้องการดึง ฟังก์ชันนี้มีประโยชน์เมื่อต้องการดึงข้อมูลชุดย่อยจากตำแหน่งใดๆ ในรายการ
List.Select จะรับ List และฟังก์ชันเงื่อนไข (selection as function) โดยจะประเมินฟังก์ชันเงื่อนไขกับสมาชิกแต่ละตัว หากฟังก์ชันคืนค่า true จะเก็บสมาชิกนั้นไว้ใน List ใหม่ หากคืนค่า false จะถูกคัดทิ้งไป
List.Skip ข้ามสมาชิกจำนวน N ตัวแรกจากรายการและคืนส่วนที่เหลือ ฟังก์ชันนี้มีประโยชน์เมื่อต้องการลบแถวหัวตารางที่ไม่ต้องการ หรือข้ามข้อมูลบางส่วนจากจุดเริ่มต้น
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่