Mảng trong JavaScript dùng để chứa nhiều giá trị trong một biến.
var cars = ["Saab", "Volvo", "BMW"];
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p id="demo"></p>
<script>
var cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Một mảng là một giá trị đặc biệt, có thể chưa nhiều hơn một giá trị một lần.
Nếu bạn có một danh sách các phần tử(một danh sách của các tên xe,lấy ví dụ), chứa các xe trong các biến đơn lẻ có thể trông như thế này:
var car1 = "Saab";
var car2 = "Volvo";
var car3 = "BMW";
Tuy nhiên, điều gì xảy ra nếu bạn muốn lặp qua các xe và tìm một cái cụ thể? Và điều gì xảy ra nếu nó không chỉ có 3 mà 300 xe?
Giải pháp là một mảng!
Một mảng có thể giữ nhiều giá trị chỉ dưới 1 cái tên, và bạn có thể truy cập các dữ liệu bằng cách tìm đến các chỉ số.
Sử dụng một mảng tĩnh gần như là cách dễ nhất để tạo một mảng JavaScript.
Cú pháp:
var array_name = [item1, item2, ...];
var cars = ["Saab", "Volvo", "BMW"];
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p id="demo"></p>
<script>
var cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Các khoảng trắng và ngắt dòng không quan trọng. Một khi khai báo có thể dãn ra nhiều dòng:
var cars = [
"Saab",
"Volvo",
"BMW"
];
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p id="demo"></p>
<script>
var cars = [
"Saab",
"Volvo",
"BMW"
];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Ví dụ tiếp theo cũng tạo ra một mảng, và gán các giá trị cho nó:
var cars = new Array("Saab", "Volvo", "BMW");
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p id="demo"></p>
<script>
var cars = new Array("Saab", "Volvo", "BMW");
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Tip: Hai ví dụ trên giống y hệt nhau. Không cần dùng new Array().
Cho đơn giản, dễ đọc và tốc độ thực thi nhanh, sử dụng cái đầu tiên(phương thức khai báo mảng nguyên bản).
Bạn có thể truy cập vào mảng bằng cách đưa ra chỉ số.
Câu lệnh sau truy cập vào giá trị của phần tử đầu tin trong cars
:
var name = cars[0];
var cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars[0];
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>JavaScript array elements are accessed using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
var cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
Tip: Các chỉ số của mảng bắt đầu bằng 0.
[0] là phần tử đầu tiên, [1] là phần tử thứ hai.
Câu lệnh sau thay đổi giá trị của phần tử đầu tiên cars
:
cars[0] = "Opel";
var cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
document.getElementById("demo").innerHTML = cars[0];
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>JavaScript array elements are accessed using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
var cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Với JavaScript, toàn bộ mảng có thể được truy cập bằng chỉ ra tên của mảng:
var cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p id="demo"></p>
<script>
var cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Mảng là một kiểu đặc biệt của đối tượng. Toán tử typeof
trong JavaScript trả về "đối tượng" cho mảng.
Nhưng, các mảng JavaScript được thể hiện tốt nhất là các mảng.
Các mảng sử dụng các chữ số để truy cập vào các "thành phần" của nó. Trong ví dụ này, person[0]
trả về John:
var 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>
var person = ["John", "Doe", 46];
document.getElementById("demo").innerHTML = person[0];
</script>
</body>
</html>
Các đối tượng dùng những cái tên để truy cập vào các "thành viên". Trong ví dụ này person.firstName trả về John:
var person = {firstName:"John", lastName:"Doe", age:46};
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Objects</h2>
<p>JavaScript uses names to access object properties.</p>
<p id="demo"></p>
<script>
var person = {firstName:"John", lastName:"Doe", age:46};
document.getElementById("demo").innerHTML = person["firstName"];
</script>
</body>
</html>
Các biến JavaScript có thể là đối tượng. Các mảng là dạng đặc biệt của các đối tượng.
Bởi vì điều này, bạn có thể có các biến của những kiểu dữ liệu khác nhau trong cùng một mảng.
Bạn có thể có các đối tượng trong một mảng. Bạn có thể có các hàm trong một mảng. Bạn có thể có các mảng trong một mảng:
myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;
Sức mạnh thật sự của các mảng JavaScript là các thuộc tính mảng xây dựng bên trong và các phương thức:
var x = cars.length; // The length property returns the number of elements
var y = cars.sort(); // The sort() method sorts arrays
Các phương thức mảng được đề cập ở các chương kế.
Thuộc tính length
của một mảng trả về độ dài của một mảng(số lượng của các phần tử trong mảng).
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.length; // the length of fruits is 4
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>The length property returns the length of an array.</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.length;
</script>
</body>
</html>
Tip: Thuộc tính length
luôn hơn 1 so với chỉ mục cao nhất trong mảng.
fruits = ["Banana", "Orange", "Apple", "Mango"];
var first = fruits[0];
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var first = fruits[0];
document.getElementById("demo").innerHTML = first;
</script>
</body>
</html>
fruits = ["Banana", "Orange", "Apple", "Mango"];
var last = fruits[fruits.length - 1];
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var last = fruits[fruits.length-1];
document.getElementById("demo").innerHTML = last;
</script>
</body>
</html>
Cách an toàn nhất để lặp qua một mảng, là dùng một vòng for
:
var fruits, text, fLen, i;
fruits = ["Banana", "Orange", "Apple", "Mango"];
fLen = fruits.length;
text = "<ul>";
for (i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text += "</ul>";
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>The best way to loop through an array is using a standard for loop:</p>
<p id="demo"></p>
<script>
var fruits, text, fLen, i;
fruits = ["Banana", "Orange", "Apple", "Mango"];
fLen = fruits.length;
text = "<ul>";
for (i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text += "</ul>";
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Bạn cũng thể sử dụng hàm Array.forEach()
:
var fruits, text;
fruits = ["Banana", "Orange", "Apple", "Mango"];
text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
function myFunction(value) {
text += "<li>" + value + "</li>";
}
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Array.forEach() calls a function for each array element.</p>
<p>Array.forEach() is not supported in Internet Explorer 8 or earlier.</p>
<p id="demo"></p>
<script>
var fruits, text;
fruits = ["Banana", "Orange", "Apple", "Mango"];
text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
document.getElementById("demo").innerHTML = text;
function myFunction(value) {
text += "<li>" + value + "</li>";
}
</script>
</body>
</html>
Các dễ nhất để thêm phần tử trong mảng là dùng phương thức push()
:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Lemon"); // adds a new element (Lemon) to fruits
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>The push method appends a new element to an array.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
fruits.push("Lemon");
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body>
</html>
Phần tử mới cũng có thể được thêm vào mảng sử dụng thuộc tính length
:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[fruits.length] = "Lemon"; // adds a new element (Lemon) to fruits
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<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>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
fruits[fruits.length] = "Lemon";
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body>
</html>
Cảnh báo !
Thêm các phần tử với các chỉ số cao có thể tạo ra các "lỗ hổng" undefined trong mảng:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[6] = "Lemon"; // adds a new element (Lemon) to fruits
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Adding elements with high indexes can create undefined "holes" in an array.</p>
<p id="demo"></p>
<script>
var fruits, text, fLen, i;
fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits[6] = "Lemon";
fLen = fruits.length;
text = "";
for (i = 0; i < fLen; i++) {
text += fruits[i] + "<br>";
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Rất nhiều ngôn ngữ lập trình hỗ trợ các mảng với chỉ mục được đặt tên.
Các mảng với các chỉ mục được đặt tên được gọi là mảng liên kết (hoặc mảng băm).
JavaScript không hỗ trợ mảng với các chỉ mục đặt tên.
Trong JavaScript, các mảng luôn luôn dùng các chỉ mục bằng số.
var person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
var x = person.length; // person.length will return 3
var y = person[0]; // person[0] will return "John"
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p id="demo"></p>
<script>
var person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
document.getElementById("demo").innerHTML =
person[0] + " " + person.length;
</script>
</body>
</html>
Cảnh báo !
Nếu bạn dùng các chỉ mục đặt tên, JavaScript sẽ định nghĩa lại mảng thành một đối tượng tiêu chuẩn.
Sau đó, một vài phương thức mảng và thuộc tính sẽ cung cấp kết quả không chính xác.
var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
var x = person.length; // person.length will return 0
var y = person[0]; // person[0] will return undefined
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<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>
var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
document.getElementById("demo").innerHTML =
person[0] + " " + person.length;
</script>
</body>
</html>
Trong JavaScript, các mảng sử dụng chỉ mục chữ số.
Trong JavaScript, các đối tượng sử dụng chỉ mục đặt tên.
Tip: Các mảng là một dạng đặc biệt của các đối tượng, với chỉ mục chữ số.
Không nên sử dụng cấu trúc tạo mảng xây dựng bên trong của JavaScript : new
Array().
Sử dụng []
thay thế.
Đây là hai câu lệnh khác nhau nhưng đều tạo một mảng rỗng mới tên là points:
var points = new Array(); // Bad
var points = []; // Good
Đây là hai câu lệnh khác nhau nhưng đều tạo một mảng mới gồm 6 số:
var points = new Array(40, 100, 1, 5, 25, 10); // Bad
var points = [40, 100, 1, 5, 25, 10]; // Good
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Avoid using new Array(). Use [] instead.</p>
<p id="demo"></p>
<script>
//var points = new Array(40, 100, 1, 5, 25, 10);
var points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points[0];
</script>
</body>
</html>
Từ khóa new
chỉ làm phức tạp code. Nó có thể cung cấp một số kết quả không đỡ được:
var points = new Array(40, 100); // Creates an array with two elements (40 and 100)
Điều gì xảy ra nếu tôi bỏ một phần tử đi?
var points = new Array(40); // Creates an array with 40 undefined elements !!!!!
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<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>
Một câu hỏi phổ biến là: Làm sao tôi biết nếu một biến là một mảng?
Vấn đề là các toán tử JavaScript typeof
trả về "object
":
var fruits = ["Banana", "Orange", "Apple", "Mango"];
typeof fruits; // returns object
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>The typeof operator, when used on an array, returns object:</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = typeof fruits;
</script>
</body>
</html>
Toán tử typeof trả về đối tượng vì một mảng JavaScript là một đối tượng.
Để giải quyết vấn đề này ECMAScript 5 định nghĩa một phương thức mới Array.isArray()
:
Array.isArray(fruits); // returns true
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>The new ECMASCRIPT 5 method isArray returns true when used on an array:</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = Array.isArray(fruits);
</script>
</body>
</html>
Để giải quyết vấn đề này bạn có thể tạo một hàm isArray()
của riêng bạn:
function isArray(x) {
return x.constructor.toString().indexOf("Array") > -1;
}
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>This "home made" isArray() function returns true when used on an array:</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = isArray(fruits);
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
</script>
</body>
</html>
Chức năng trên luôn trả về true nếu đối số là một mảng.
Hoặc rõ ràng hơn: nó trả về true nếu đối tượng nguyên mẫu chứa từ "Array".
Toán tử instanceof
trả về true nếu một object được tạo bởi một hàm tạo đã cho:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits instanceof Array; // returns true
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>The instanceof operator returns true when used on an array:</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits instanceof Array;
</script>
</body>
</html>
Ứng Dụng Học
Theo dõi cập nhật nội dung học trên Youtube & Facebook
Thông Tin Liên Hệ
Công Ty Cổ Phần Phát Triển Công Nghệ Gozic.
Website: https://gozic.vn
SĐT: 096 - 70 25 996
Email: ziczacgroup@gmail.com
Thiết kế webiste chuyên nghiệp
Thiết kế phần mềm quản trị
Thiết kế ứng dụng Android
Thiết kế ứng dụng IOS
Thiết kế Web App
Hỗ trợ Digital Marketing
Hỗ trợ quảng cáo Google Ads
Hỗ trợ quảng cáo Facebook Ads
Hỗ trợ SEO Website