Array Methods
Array Methods
Section titled “Array Methods”Array methods ทำให้เขียน data transformation ได้สั้น อ่านง่าย และไม่ต้อง mutate ข้อมูลเดิม
ข้อมูลตัวอย่าง
Section titled “ข้อมูลตัวอย่าง”const users = [ { name: "สมชาย", age: 28, role: "developer" }, { name: "สมหญิง", age: 34, role: "designer" }, { name: "วิชัย", age: 22, role: "developer" }, { name: "นภา", age: 30, role: "manager" },];map — แปลงทุกตัว
Section titled “map — แปลงทุกตัว”// สร้าง array ใหม่จากการแปลงแต่ละ elementconst names = users.map(user => user.name);// ["สมชาย", "สมหญิง", "วิชัย", "นภา"]
const summaries = users.map(u => `${u.name} (${u.age})`);// ["สมชาย (28)", "สมหญิง (34)", "วิชัย (22)", "นภา (30)"]names = [u["name"] for u in users]# หรือ list(map(lambda u: u["name"], users))// C ไม่มี built-in — ต้อง loop เองfor (int i = 0; i < len; i++) { results[i] = transform(arr[i]);}SELECT name FROM users;filter — กรอง
Section titled “filter — กรอง”const devs = users.filter(u => u.role === "developer");// [{ name: "สมชาย", ... }, { name: "วิชัย", ... }]
const seniors = users.filter(u => u.age >= 30);// [{ name: "สมหญิง", ... }, { name: "นภา", ... }]reduce — รวมเป็นค่าเดียว
Section titled “reduce — รวมเป็นค่าเดียว”// รวมอายุconst totalAge = users.reduce((sum, u) => sum + u.age, 0);// 114
// นับตาม roleconst roleCount = users.reduce((acc, u) => { acc[u.role] = (acc[u.role] || 0) + 1; return acc;}, {});// { developer: 2, designer: 1, manager: 1 }find & findIndex
Section titled “find & findIndex”// find — คืนตัวแรกที่เจอ (หรือ undefined)const manager = users.find(u => u.role === "manager");// { name: "นภา", age: 30, role: "manager" }
// findIndex — คืน index ตัวแรกที่เจอ (หรือ -1)const idx = users.findIndex(u => u.name === "วิชัย");// 2some & every
Section titled “some & every”// some — มีอย่างน้อย 1 ตัวที่ผ่านเงื่อนไข?const hasMinor = users.some(u => u.age < 18); // falseconst hasDev = users.some(u => u.role === "developer"); // true
// every — ทุกตัวผ่านเงื่อนไข?const allAdult = users.every(u => u.age >= 18); // trueconst allDevs = users.every(u => u.role === "developer"); // falseforEach
Section titled “forEach”// forEach — วน loop (ไม่ return ค่า)users.forEach(u => { console.log(`${u.name}: ${u.role}`);});// sort mutates! ใช้ spread copy ก่อนconst sorted = [...users].sort((a, b) => a.age - b.age);// เรียงอายุน้อย → มาก
// เรียง stringconst namesSorted = [...names].sort((a, b) => a.localeCompare(b, "th"));Chaining Methods
Section titled “Chaining Methods”// รวม method chain เป็น pipelineconst result = users .filter(u => u.role === "developer") .map(u => u.name.toUpperCase()) .sort();// ["วิชัย", "สมชาย"] (sorted)