อาร์เรย์เป็นตัวแปรพิเศษซึ่งสามารถเก็บค่าได้มากกว่าหนึ่งค่า:
const cars = ["Saab", "Volvo", "BMW"];
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
หากคุณมีรายการสิ่งของ (เช่น รายชื่อรถยนต์) ให้จัดเก็บ รถยนต์ในตัวแปรเดี่ยวอาจมีลักษณะดังนี้:
let car1 = "Saab";
let car2 = "Volvo";
let car3 = "BMW";
อย่างไรก็ตาม จะเป็นอย่างไรถ้าคุณต้องการวนซ้ำรถและค้นหาคันใดคันหนึ่งโดยเฉพาะ? แล้วถ้าคุณไม่มีรถ 3 คัน แต่มี 300 คันล่ะ?
วิธีแก้ไขคืออาร์เรย์!
อาร์เรย์สามารถเก็บค่าได้หลายค่าภายใต้ชื่อเดียว และคุณก็สามารถทำได้ เข้าถึงค่าโดยอ้างอิงถึงหมายเลขดัชนี
การใช้อาร์เรย์ลิเทอรัลเป็นวิธีที่ง่ายที่สุดในการสร้างอาร์เรย์ JavaScript
ไวยากรณ์:
const array_name = [item1, item2, ...];
เป็นเรื่องปกติในการประกาศอาร์เรย์ด้วยคีย์เวิร์ด const
เรียนรู้เพิ่มเติมเกี่ยวกับ const ด้วยอาร์เรย์ในบท: JS Array Const.
const cars = ["Saab", "Volvo", "BMW"];
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
การเว้นวรรคและการขึ้นบรรทัดไม่สำคัญ การประกาศสามารถขยายได้หลายบรรทัด:
const cars = [
"Saab",
"Volvo",
"BMW"
];
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = [
"Saab",
"Volvo",
"BMW"
];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
คุณยังสามารถสร้างอาร์เรย์แล้วจัดเตรียมองค์ประกอบต่างๆ ได้:
const cars = [];
cars[0]= "Saab";
cars[1]= "Volvo";
cars[2]= "BMW";
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = [];
cars[0]= "Saab";
cars[1]= "Volvo";
cars[2]= "BMW";
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
ตัวอย่างต่อไปนี้จะสร้างอาร์เรย์และกำหนดค่าให้กับอาร์เรย์ด้วย:
const cars = new Array("Saab", "Volvo", "BMW");
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = new Array("Saab", "Volvo", "BMW");
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
สองตัวอย่างข้างต้นทำสิ่งเดียวกันทุกประการ
ไม่จำเป็นต้องมี new Array()
เพื่อความเรียบง่าย อ่านง่าย และความเร็วในการดำเนินการ ให้ใช้วิธีอาร์เรย์ตามตัวอักษร
คุณเข้าถึงองค์ประกอบอาร์เรย์โดยอ้างอิงถึง หมายเลขดัชนี:
const cars = ["Saab", "Volvo", "BMW"];
let car = cars[0];
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accessed using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
หมายเหตุ: ดัชนีอาร์เรย์เริ่มต้นด้วย 0
[0] เป็นองค์ประกอบแรก [1] เป็นองค์ประกอบที่สอง
คำสั่งนี้เปลี่ยนค่าขององค์ประกอบแรกใน cars
:
cars[0] = "Opel";
const cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accessed using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
วิธีการ JavaScript toString()
แปลงอาร์เรย์เป็น สตริงของค่าอาร์เรย์ (คั่นด้วยเครื่องหมายจุลภาค)
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.toString();
ผลลัพธ์ :
Banana,Orange,Apple,Mangoลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The toString() Method</h2>
<p>The toString() method returns an array as a comma separated string:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.toString();
</script>
</body>
</html>
ด้วย JavaScript คุณสามารถเข้าถึงอาร์เรย์แบบเต็มได้โดยอ้างอิงถึงอาร์เรย์ ชื่อ:
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
อาร์เรย์เป็นวัตถุชนิดพิเศษ ตัวดำเนินการ typeof
ใน JavaScript ส่งคืน "object" สำหรับ อาร์เรย์
แต่อาร์เรย์ JavaScript อธิบายได้ดีที่สุดว่าเป็นอาร์เรย์
อาร์เรย์ใช้ ตัวเลข เพื่อเข้าถึง "องค์ประกอบ" ในเรื่องนี้ ตัวอย่าง บุคคล[0]
ส่งคืนจอห์น:
const person = ["John", "Doe", 46];
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Arrays use numbers to access its elements.</p>
<p id="demo"></p>
<script>
const person = ["John", "Doe", 46];
document.getElementById("demo").innerHTML = person[0];
</script>
</body>
</html>
ออบเจ็กต์ใช้ ชื่อ เพื่อเข้าถึง "สมาชิก" ในตัวอย่างนี้ <รหัส class="w3-codespan">person.firstName ส่งคืนจอห์น:
const person = {firstName:"John", lastName:"Doe", age:46};
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Objects</h1>
<p>JavaScript uses names to access object properties.</p>
<p id="demo"></p>
<script>
const person = {firstName:"John", lastName:"Doe", age:46};
document.getElementById("demo").innerHTML = person.firstName;
</script>
</body>
</html>
ตัวแปร JavaScript สามารถเป็นวัตถุได้ อาร์เรย์เป็นวัตถุชนิดพิเศษ
ด้วยเหตุนี้คุณจึงสามารถมีตัวแปรประเภทต่างๆ ได้ใน อาร์เรย์เดียวกัน
คุณสามารถมีวัตถุในอาร์เรย์ได้ คุณสามารถมีฟังก์ชันในอาร์เรย์ได้ คุณสามารถ มีอาร์เรย์ในอาร์เรย์:
myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;
จุดแข็งที่แท้จริงของอาร์เรย์ JavaScript คือคุณสมบัติอาร์เรย์ในตัวและ วิธีการ:
cars.length // Returns the number of elements
cars.sort() // Sorts the array
วิธีการแบบอาร์เรย์จะกล่าวถึงในบทถัดไป
length
คุณสมบัติของอาร์เรย์ส่งกลับความยาวของอาร์เรย์ (จำนวนอาร์เรย์ องค์ประกอบ)
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let length = fruits.length;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The length Property</h2>
<p>The length property returns the length of an array:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let size = fruits.length;
document.getElementById("demo").innerHTML = size;
</script>
</body>
</html>
คุณสมบัติ length
มีค่ามากกว่าดัชนีอาร์เรย์สูงสุดเสมอ
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[0];
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits[0];
</script>
</body>
</html>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[fruits.length - 1];
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits[fruits.length-1];
</script>
</body>
</html>
วิธีหนึ่งในการวนซ้ำอาร์เรย์คือการใช้ for
วนซ้ำ:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fLen = fruits.length;
let text = "<ul>";
for (let i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text
+= "</ul>";
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Looping an Array</h2>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fLen = fruits.length;
let text = "<ul>";
for (let i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text += "</ul>";
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
คุณยังสามารถใช้ฟังก์ชัน Array.forEach()
ได้ด้วย:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
function
myFunction(value) {
text += "<li>" + value + "</li>";
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The forEach() Method</h2>
<p>Call a function for each array element:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
document.getElementById("demo").innerHTML = text;
function myFunction(value) {
text += "<li>" + value + "</li>";
}
</script>
</body>
</html>
วิธีที่ง่ายที่สุดในการเพิ่มองค์ประกอบใหม่ให้กับอาร์เรย์คือการใช้ push()
วิธีการ:
const fruits = ["Banana", "Orange", "Apple"];
fruits.push("Lemon"); // Adds a new element (Lemon) to fruits
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The push() Method</h2>
<p>The push method appends a new element to an array.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
fruits.push("Lemon");
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body>
</html>
องค์ประกอบใหม่ยังสามารถเพิ่มลงในอาร์เรย์โดยใช้คุณสมบัติ length
:
const fruits = ["Banana", "Orange", "Apple"];
fruits[fruits.length] = "Lemon"; // Adds "Lemon" to fruits
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>The length property provides an easy way to append new elements to an array without using the push() method.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
fruits[fruits.length] = "Lemon";
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body>
</html>
คำเตือน !
<p>การเพิ่มองค์ประกอบที่มีดัชนีสูงสามารถสร้าง "รู" ที่ไม่ได้กำหนดในอาร์เรย์:
const fruits = ["Banana", "Orange", "Apple"];
fruits[6] = "Lemon"; // Creates undefined "holes" in fruits
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Adding elements with high indexes can create undefined "holes" in an array.</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
fruits[6] = "Lemon";
let fLen = fruits.length;
let text = "";
for (i = 0; i < fLen; i++) {
text += fruits[i] + "<br>";
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
ภาษาการเขียนโปรแกรมหลายภาษารองรับอาร์เรย์ที่มีดัชนีที่ระบุชื่อ
อาร์เรย์ที่มีดัชนีระบุชื่อเรียกว่าการเชื่อมโยง อาร์เรย์ (หรือแฮช)
JavaScript ไม่ สนับสนุนอาร์เรย์ที่มีดัชนีที่มีชื่อ
ใน JavaScript อาร์เรย์ จะใช้ ดัชนีที่เป็นตัวเลข เสมอ
const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
person.length; // Will return 3
person[0]; // Will return "John"
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
document.getElementById("demo").innerHTML =
person[0] + " " + person.length;
</script>
</body>
</html>
คำเตือน !!
หากคุณใช้ดัชนีที่มีชื่อ JavaScript จะกำหนดอาร์เรย์ให้กับออบเจ็กต์ใหม่
หลังจากนั้น วิธีการและคุณสมบัติอาร์เรย์บางอย่างจะสร้าง ไม่ถูกต้อง ผลลัพธ์.
const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length; // Will return 0
person[0]; // Will return undefined
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>If you use a named index when accessing an array, JavaScript will redefine the array to a standard object, and some array methods and properties will produce undefined or incorrect results.</p>
<p id="demo"></p>
<script>
const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
document.getElementById("demo").innerHTML =
person[0] + " " + person.length;
</script>
</body>
</html>
ใน JavaScript อาร์เรย์ ใช้ ดัชนีที่เป็นตัวเลข
ใน JavaScript วัตถุ ใช้ ดัชนีที่มีชื่อ
อาร์เรย์เป็นวัตถุชนิดพิเศษที่มีดัชนีเป็นตัวเลข
JavaScript ไม่สนับสนุนอาร์เรย์ที่เชื่อมโยง
คุณควรใช้ วัตถุ เมื่อคุณต้องการให้ชื่อองค์ประกอบ สตริง (ข้อความ)
คุณควรใช้ อาร์เรย์ เมื่อคุณต้องการให้ชื่อองค์ประกอบเป็น ตัวเลข
JavaScript มีตัวสร้างอาร์เรย์ในตัว new Array()
แต่คุณสามารถใช้ []
แทนได้อย่างปลอดภัย
คำสั่งที่แตกต่างกันทั้งสองนี้สร้างอาร์เรย์ว่างใหม่ชื่อจุด:
const points = new Array();
const points = [];
คำสั่งที่แตกต่างกันทั้งสองนี้สร้างอาร์เรย์ใหม่ที่มีตัวเลข 6 ตัว:
const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Creating an Array</h2>
<p>Avoid using new Array(). Use [] instead.</p>
<p id="demo"></p>
<script>
//const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points[0];
</script>
</body>
</html>
คีย์เวิร์ด ใหม่
สามารถสร้างผลลัพธ์ที่ไม่คาดคิดได้:
// Create an array with three elements:
const points = new Array(40, 100, 1);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Create an Array with three elements.</p>
<p id="demo"></p>
<script>
var points = new Array(40, 100, 1);
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
// Create an array with two elements:
const points = new Array(40, 100);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Create an Array with two elements.</p>
<p id="demo"></p>
<script>
var points = new Array(40, 100);
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
// Create an array with one element ???
const points = new Array(40);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Avoid using new Array().</p>
<p id="demo"></p>
<script>
var points = new Array(40);
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
const points = [40];
ไม่เหมือนกับ:
const points = new Array(40);
// Create an array with one element:
const points = [40];
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Create an Array with one element.</p>
<p id="demo"></p>
<script>
var points = [40];
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
// Create an array with 40 undefined elements:
const points = new Array(40);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Avoid using new Array().</p>
<p id="demo"></p>
<script>
var points = new Array(40);
document.getElementById("demo").innerHTML = points[0];
</script>
</body>
</html>
คำถามทั่วไปคือ ฉันจะรู้ได้อย่างไรว่าตัวแปรเป็นอาร์เรย์?
ปัญหาคือตัวดำเนินการ JavaScript typeof
ส่งคืน "<รหัส class="w3-codespan">วัตถุ":
const fruits = ["Banana", "Orange", "Apple"];
let type = typeof fruits;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The typeof Operator</h2>
<p>The typeof operator, when used on an array, returns object:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = typeof fruits;
</script>
</body>
</html>
ตัวดำเนินการ typeof ส่งคืนวัตถุเนื่องจากอาร์เรย์ JavaScript เป็น วัตถุ.
เพื่อแก้ไขปัญหานี้ ECMAScript 5 (JavaScript 2009) ได้กำหนดวิธีการใหม่ Array.isArray()
:
Array.isArray(fruits);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The isArray() Method</h2>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = Array.isArray(fruits);
</script>
</body>
</html>
ตัวดำเนินการ instanceof
จะคืนค่าเป็นจริงหากวัตถุถูกสร้างขึ้น โดยตัวสร้างที่กำหนด:
const fruits = ["Banana", "Orange", "Apple"];
fruits instanceof Array;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The instanceof Operator</h2>
<p>The instanceof operator returns true when used on an array:</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = fruits instanceof Array;
</script>
</body>
</html>
หากต้องการข้อมูลอ้างอิง Array ฉบับสมบูรณ์ โปรดไปที่:
การอ้างอิงอาร์เรย์ JavaScript ที่สมบูรณ์
ข้อมูลอ้างอิงประกอบด้วยคำอธิบายและตัวอย่างของ Array ทั้งหมด คุณสมบัติและวิธีการ