เมธอด Array.of() ใช้สำหรับ สร้างอินสแตนซ์อาร์เรย์ใหม่ จากค่าที่ส่งเข้ามาเป็นพารามิเตอร์ โดยไม่คำนึงถึงจำนวนหรือชนิดของพารามิเตอร์
ไวยากรณ์ (Syntax)
Array.of(element0[, element1[, ...[, elementN]]])
จุดแตกต่างจาก Array Constructor
// Array constructor: พฤติกรรมพิเศษเมื่อมีอาร์กิวเมนต์เดียวที่เป็นตัวเลข
Array(3); // [empty × 3] - สร้างอาร์เรย์ว่างขนาด 3!
Array(3, 4); // [3, 4] - แต่ถ้ามี 2 ตัวขึ้นไป จะเป็นองค์ประกอบ
// Array.of: พฤติกรรมสม่ำเสมอเสมอ
Array.of(3); // [3] - อาร์เรย์ที่มีองค์ประกอบเดียวคือ 3
Array.of(3, 4); // [3, 4]
Array.of('hello'); // ['hello']
ตัวอย่างการใช้งาน
ตัวอย่างที่ 1: สร้างอาร์เรย์จากตัวเลข
<!DOCTYPE html>
<html>
<body>
<h2>Array.of() ตัวเลข</h2>
<button onclick="display()">แสดงใน Console</button>
<p id="demo"></p>
<script>
function display() {
const arr = Array.of(10, 20, 30, 40, 50);
console.log(arr); // [10, 20, 30, 40, 50]
document.getElementById("demo").innerHTML = "ดูผลลัพธ์ใน Console (F12)";
}
</script>
</body>
</html>
ตัวอย่างที่ 2: สร้างอาร์เรย์จากสตริง
<!DOCTYPE html>
<html>
<body>
<h2>Array.of() สตริง</h2>
<button onclick="display()">แสดงใน Console</button>
<p id="demo"></p>
<script>
function display() {
const arr = Array.of("Kevin", "Tom", "Ryan", "Jacob", "Jack");
console.log(arr); // ["Kevin", "Tom", "Ryan", "Jacob", "Jack"]
document.getElementById("demo").innerHTML = "ดูผลลัพธ์ใน Console (F12)";
}
</script>
</body>
</html>
เมื่อไหร่ควรใช้ Array.of()?
- ต้องการสร้างอาร์เรย์จากค่าที่รู้จักล่วงหน้า (known values)
- หลีกเลี่ยงพฤติกรรม "special case" ของ
Array(n)เมื่อ n เป็นตัวเลข - เขียนโค้ดที่ชัดเจนและอ่านง่าย (Explicit intent)
เปรียบเทียบวิธีสร้างอาร์เรย์
| วิธี | ตัวอย่าง | ผลลัพธ์ | หมายเหตุ |
|---|---|---|---|
| Array Literal | [1,2,3] | [1,2,3] | ✅ แนะนำส่วนใหญ่ |
| Array.of() | Array.of(1,2,3) | [1,2,3] | ✅ ดีสำหรับ dynamic args |
| Array() | Array(3) | [empty×3] | ⚠️ พฤติกรรมพิเศษ |
| Array.from() | Array.from({length:3}, (_,i)=>i) | [0,1,2] | ✅ สำหรับ range/sequence |