<!DOCTYPE html>
    <html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
    <head>
<title>Tìm hiểu về Collection of Record trong JavaScript</title>
<meta name="description" content="Tìm hiểu về Collection of Record trong JavaScript - Savefile - Tin Tức -...">
<meta name="author" content="MangVN">
<meta name="copyright" content="MangVN [admin@vinades.vn]">
<meta name="generator" content="NukeViet v4.5">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Tìm hiểu về Collection of Record trong JavaScript">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;mangvn.org&#x002F;savefile&#x002F;Thu-thuat-tin-hoc&#x002F;Tim-hieu-ve-Collection-of-Record-trong-JavaScript-3190.html">
<meta property="og:site_name" content="MangVN">
<meta property="og:url" content="https://mangvn.org/savefile/Thu-thuat-tin-hoc/Tim-hieu-ve-Collection-of-Record-trong-JavaScript-3190.html">
<link rel="shortcut icon" href="https://mangvn.org/favicon.ico">
<link rel="canonical" href="https://mangvn.org/savefile/Thu-thuat-tin-hoc/Tim-hieu-ve-Collection-of-Record-trong-JavaScript-3190.html">
<link rel="alternate" href="https://mangvn.org/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Tin-nhanh-Cong-nghe/" title="Tin Tức - Tin nhanh Công nghệ" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Virut-Hacker-Bao-mat/" title="Tin Tức - Virut, Hacker & Bảo mật" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/CNTT/" title="Tin Tức - CNTT" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Vien-thong/" title="Tin Tức - Viễn thông" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/May-tinh/" title="Tin Tức - Máy tính" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Dien-thoai/" title="Tin Tức - Điện thoại" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/May-anh/" title="Tin Tức - Máy ảnh" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Thu-thuat-Phan-mem/" title="Tin Tức - Thủ thuật - Phần mềm" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Phan-mem-Tin-hoc/" title="Tin Tức - Phần mềm Tin học" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Thu-thuat-tin-hoc/" title="Tin Tức - Thủ thuật tin học" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Thiet-ke-Web/" title="Tin Tức - Thiết kế Web" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Kien-thuc-co-ban/" title="Tin Tức - Kiến thức cơ bản" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/PHP-HTML-JavaScript/" title="Tin Tức - PHP, HTML & JavaScript" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Quang-cao-tang-thu-nhap/" title="Tin Tức - Quảng cáo tăng thu nhập" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Tao-Web-bang-NukeViet/" title="Tin Tức - Tạo Web NukeViet" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Ban-tin-an-ninh/" title="Tin Tức - Bản tin an ninh" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Tin-tuc-NukeViet/" title="Tin Tức - Tin tức NukeViet" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Nhan-vat-su-kien/" title="Tin Tức - Nhân vật & sự kiện" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Huong-dan-su-dung/" title="Tin Tức - Hướng dẫn sử dụng" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/He-thong-NukeViet-20/" title="Tin Tức - Hệ thống NukeViet 2.0" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/He-thong-NukeViet-10/" title="Tin Tức - Hệ thống NukeViet 1.0" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/NukeViet-co-ban/" title="Tin Tức - NukeViet cơ bản" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Web-Internet/" title="Tin Tức - Web & Internet" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Thu-thuat-Internet/" title="Tin Tức - Thủ thuật Internet" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Dich-vu-tien-ich/" title="Tin Tức - Dịch vụ & tiện ích" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Website-nen-vao/" title="Tin Tức - Website nên vào" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Thong-tin-khuyen-mai/" title="Tin Tức - Thông tin khuyến mại" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/thuong-mai-dien-tu/" title="Tin Tức - Thương mại điện tử" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Hau-truong/" title="Tin Tức - Hậu trường" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Blog-Admin/" title="Tin Tức - Blog Admin" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Cong-tac-vien/" title="Tin Tức - Cộng tác viên" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Chuyen-cong-nghe/" title="Tin Tức - Chuyện công nghệ" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Chuyen-kinh-doanh/" title="Tin Tức - Chuyện kinh doanh" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Cuoc-song-quanh-ta/" title="Tin Tức - Cuộc sống quanh ta" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Cuoi-thu-gian/" title="Tin Tức - Cười thư giãn" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Lang-nghe-va-suy-ngam/" title="Tin Tức - Lắng nghe và suy ngẫm" type="application/rss+xml">
<link rel="alternate" href="https://mangvn.org/rss/Kien-thuc-Song/" title="Tin Tức - Kiến thức Sống" type="application/rss+xml">
<link rel="preload" as="style" href="https://mangvn.org/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://mangvn.org/themes/default/css/bootstrap.min.css" type="text/css">
<link rel="preload" as="style" href="https://mangvn.org/themes/default/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://mangvn.org/themes/default/css/style.responsive.css" type="text/css">
<link rel="preload" as="style" href="https://mangvn.org/themes/default/css/news.css" type="text/css">
<link rel="preload" as="style" href="https://mangvn.org/themes/default/css/custom.css" type="text/css">
<link rel="preload" as="script" href="https://mangvn.org/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://mangvn.org/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://mangvn.org/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://mangvn.org/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://mangvn.org/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://mangvn.org/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://mangvn.org/themes/default/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://mangvn.org/themes/default/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://mangvn.org/themes/default/js/bootstrap.min.js" type="text/javascript">
<link rel="stylesheet" href="https://mangvn.org/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://mangvn.org/themes/default/css/bootstrap.min.css">
<link rel="stylesheet" href="https://mangvn.org/themes/default/css/style.css">
<link rel="stylesheet" href="https://mangvn.org/themes/default/css/style.responsive.css">
<link rel="StyleSheet" href="https://mangvn.org/themes/default/css/news.css">
<link rel="stylesheet" href="https://mangvn.org/themes/default/css/custom.css">
<style type="text/css">
	body{background: #fff;}
</style>
    </head>
    <body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">MangVN</h2>
		<p class="pull-right"><a title="MangVN" href="https://mangvn.org/">https://mangvn.org</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Tìm hiểu về Collection of Record trong JavaScript</h1>
		<ul class="list-inline">
			<li>Thứ hai - 24/10/2011 23:00</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
						<div class="pull-left imghome">
				<img alt="Tìm hiểu về Collection of Record trong JavaScript" src="https://mangvn.org/assets/news/2011_10/collectionjava01.jpg" width="100" class="img-thumbnail" />
			</div>
			Trong bài viết trước, chúng tôi đã giới thiệu với các bạn một vài đặc điểm về mảng 2 chiều – Array 2D trong JavaScript,  trong nhiều trường hợp áp dụng khi chúng ta cần giữ thông tin về 1 hoặc  nhiều danh sách số lượng chuỗi dữ liệu nhất định, đối tượng Array sẽ là  công cụ được sử dụng phổ biến và nhiều nhất...
		</div>
		<div id="bodytext" class="clearfix">
			<p><span style="color: rgb(51, 51, 51);"><strong>Quản Trị Mạng - Trong bài viết trước, chúng tôi đã giới thiệu với các bạn một vài đặc điểm về </strong></span><a target="_blank"><span style="color: rgb(0, 0, 255);"><strong>mảng 2 chiều – Array 2D trong JavaScript</strong></span></a><span style="color: rgb(51, 51, 51);"><strong>, trong nhiều trường hợp áp dụng khi chúng ta cần giữ thông tin về 1 hoặc nhiều danh sách số lượng chuỗi dữ liệu nhất định, đối tượng Array sẽ là công cụ được sử dụng phổ biến và nhiều nhất. </strong></span></p><p>Ví dụ như sau:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var aNames= [ &quot;Adam&quot;, &quot;Bill&quot;, &quot;Carl&quot; ]; // cre-ate an array</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">alert( aNames[0] ); // Adam  --  look it up by its index number</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">// iterate through them<br />for ( var j=0; j&lt; aNames.length; j++ ) {<br />    alert( aNames[j] );  // <br />}</span></em></p><p>Nhưng trên thực tế, <strong>JavaScript</strong> còn hỗ trợ thêm <strong>Associative Arrays</strong> (hay còn gọi là <strong>Maps </strong>hoặc <strong>Dictionaries</strong>), cung cấp thêm cho người sử dụng 1 cách khác để truy cập vào danh sách các đối tượng không qua vị trí, mà là khóa liên kết:</p><p style="text-align: center;"><img border="0" align="absMiddle" src="http://www.quantrimang.com.vn/photos/image/102011/25/collectionjava--02.jpg" /></p><p>Tuy nhiên, tính năng hỗ trợ này không hoạt động giống với những gì mà chúng ta đã biết trước kia:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">// this seems reasonable...</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var aNames= new Array();  <br />aNames[ &quot;Anderson&quot; ]= &quot;Adam&quot;;<br />aNames[ &quot;Browne&quot;   ]= &quot;Bill&quot;;<br />aNames[ &quot;Crawford&quot; ]= &quot;Carl&quot;;</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">alert( aNames[ &quot;Anderson&quot; ] );  // shows Adam (as expected)</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">// ... but this might not seem reasonable:</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">alert( aNames.length ); // shows 0 !!! (why not 3?)</span></em></p><p>Đoạn mã trên có chức năng tạo đối tượng Array, sau đó chèn dữ liệu nothing vào bất cứ thành phần nào trong mảng này. Và những quá trình tiếp theo sẽ tiến hành sau đó: tất cả các biến JavaScript (bao gồm cả Array) sẽ được coi là đối tượng với thuộc tính cơ bản của 1 Object điển hình. Những thuộc tính đó được xây dựng dựa trên các khối lớp hỗ trợ khả năng xử lý, giám sát cặp giá trị của mảng liên kết. Ví dụ như sau:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var mapNames= new Object();     // or:  var mapNames= {};<br />mapNames[ &quot;Anderson&quot; ]= &quot;Adam&quot;;<br />mapNames[ &quot;Browne&quot;   ]= &quot;Bill&quot;;<br />mapNames.Crawford     = &quot;Carl&quot;; // al-ternate syntax<br />mapNames[ 2          ]= &quot;Two&quot;;</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">alert( mapNames.length ); // undefined (it is not an Array)</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">for ( var j in mapNames ) { // show the keys<br />    alert( j );             // Anderson, Browne, Crawford, 2<br />}<br />for ( var j in mapNames ) { // show the data associated with each key<br />    alert( mapNames[j] );   // Adam, Bill, Carl, Two<br />}</span></em></p><p>Cặp giá trị key/value thường xuyên được gọi trong phần thuộc tính – <strong>Properties</strong> của 1 đối tượng. Và đối tượng Object hỗ trợ tùy chọn cho phép người dùng thiết lập, khởi tạo khóa key và giá trị trong cùng 1 thời điểm:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var mapNames= {<br />   &quot;Anderson&quot; : &quot;Adam&quot;,    // syntax is key:value<br />   &quot;Browne&quot;   : &quot;Bill&quot;,<br />   &quot;Crawford&quot; : &quot;Carl&quot;<br />};<br />for ( var n in mapNames ) {        // show the keys and values<br />    alert( n+ &quot;=&quot; + mapNames[n] ); // Anderson=Adam, Browne=Bill, etc...<br />}</span></em></p><p>Giá trị key ở phía bên trái và value ở bên phải. Phần value này không nhất thiết phải là string hoặc bất cứ đối tượng nào tương ứng, chỉ cần có sẵn thuộc tính key/value. Một số thông tin hoặc ví dụ tham khảo, các bạn có thể đọc thêm tại <a target="_blank" href="http://en.wikipedia.org/wiki/Json#Data_types.2C_syntax_and_example">đây</a>.</p><h2>Gán đối tượng thành tham số chức năng:</h2><p>Chức năng linh hoạt này tỏ ra rất hữu ích trong nhiều trường hợp, 1 trong những số đó là quá trình truyền dữ liệu qua cấu trúc gọi chức năng, tương tự như như cách làm truyền tham số qua tên biến. Ví dụ như sau:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">...<br />DoThat( {color:&quot;Red&quot;, font:&quot;Arial&quot; } ); // unnamed object<br />...<br />function DoThat( o ) {<br />    alert( o.color );    // shows:  Red<br />    alert( o.font );     // shows:  Arial<br />}</span></em></p><p>Thủ tục gọi lệnh như trên sẽ tạo ra các đối tượng nặc danh - Anonymous (bộ tổ hợp các giá trị key:value), và các cú pháp lệnh được gọi ra có thể truy cập tới phần giá trị trong đối tượng qua tên. Lưu ý rằng nếu khóa key có dạng chuỗi ký tự thì có thể bỏ qua dấu ngoặc kép khi khởi tạo giá trị thuộc tính.</p><h2>Tạo các mảng Record kết hợp:</h2><p>Trên thực tế, chúng ta có thể dễ dàng tạo được các đối tượng map một cách nhanh chóng và gán thêm nhiều thuộc tính đi kèm. Tuy nhiên, cách làm này lại có 1 nhược điểm, ví dụ như sau:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var o= {};              // or: var o= new Object();<br />o.lastName= &quot;Anderson&quot;;<br />o.age= 17;</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">... later that day ...</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">o.LastName= &quot;Smith&quot;;  // oops, uppercase L</span></em></p><p>Nếu bạn bỏ lỡ tên của giá trị key bất kỳ, thì sau đó phải gán thêm thuộc tính mới vào đối tượng này. Mặc dù JavaScript có thể kết hợp với các đối tượng map thì không cần phải khai báo trực tiếp, nhưng làm theo cách này sẽ giúp chúng ta giảm thiểu được khá nhiều lỗi.</p><p>Trong phần lớn các trường hợp áp dụng trên thực tế, chúng ta có thể thực hiện bằng cách khởi tạo 1 bản ghi đã được định nghĩa sẵn – với cấu trúc đi kèm có chứa toàn bộ thông tin, dữ liệu trong đối tượng đó. Sau đó, sẽ gán các phần thông tin khởi tạo này tới đối tượng, qua đó chúng ta có thể dễ dàng phân loại, quản lý toàn bộ hệ thống thuộc tính có liên quan.</p><p>Tại cùng thời điểm đó, có lẽ các bạn sẽ cần thêm cách để khởi tạo giá trị record ban đầu, thiết lập giá trị mặc định, cách cố định... bằng cú pháp <strong>JavaScript</strong> như sau:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">function PersonRec() {<br />    this.sNameLast=  &#039;&#039;;   // the &quot;this.&quot; part is required<br />    this.sNameFirst= &#039;&#039;;<br />    this.nAge=       0;<br />    this.fIsParent=  false;<br />    this.asChildren= new Array();<br />}</span></em></p><p>Ví dụ như trên, chúng ta đã hoàn tất việc khởi tạo đối tượng với những thuộc tính nhất định. Và khi đã tới bước này, các bạn đã có thể nghĩ đến việc coi 1 đối tượng bất kỳ như 1 bản ghi với nhiều trường dữ liệu khác nhau. Đối với những người đã có sẵn nền tảng kiến thức dựa trên C++, thì có thể rất khó khăn trong việc dùng từ khóa function để khởi tạo 1 cấu trúc xây dựng bất kỳ, nhưng lại có thể gây nhầm lẫn nếu trong phần mã còn lại có chứa chức năng hoặc biến constructor. Đoạn mã ví dụ trên không có tham số, nhưng phần mã dưới đây sẽ đảm nhận việc khởi tạo số lượng các biến của tham số, sau đó gán chúng vào trường dữ liệu riêng biệt:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">function PersonRec(p1,p2,p3,p4,p5) {<br />    this.sNameLast= (p1 != undefined) ? p1 : &#039;&#039;;<br />    this.sNameFirst=(p2 != undefined) ? p2 : &#039;&#039;;<br />    this.nAge=      (p3 != undefined) ? p3 : -1;<br />    this.fIsParent= (p4 != undefined) ? p4 : false;<br />    this.asChildren=(p5 != undefined) ? p5 : new Array();<br />}</span></em></p><p>Nếu như làm như trên, các ký tự hoặc biến thiếu sót sẽ được phát hiện, và các trường tương ứng sẽ dược tự động gán dữ liệu mặc định. Để tạo record, các bạn hãy sử dụng cú pháp như sau:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var rPer1= new PersonRec();  // populated with defaults</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var rPer2= new PersonRec( &quot;Anderson&quot;, &quot;Adam&quot;, 35, true, [&quot;Andy&quot;,&quot;Al&quot;] ); // all data</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var rPer3= new PersonRec( &quot;Browne&quot;, &quot;Bill&quot; );  // with some data and some defaults</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">rPer3.nAge= 43;              // up-date the record<br />rPer3.sNameFirst= &quot;William&quot;; // up-date the record</span></em></p><p>Chức năng xây dựng có thể thực hiện được nhiều hơn việc gán dữ liệu đơn thuần, ví dụ như tính toán dữ liệu của 1 trường dựa vào một số trường khác có liên quan, đọc hoặc chuyển tiếp thông tin từ trang web, lựa chọn dữ liệu từ database... hoặc bất kỳ thao tác nào người dùng muốn thực hiện mỗi khi 1 đối tượng Record được tạo. Bên cạnh đó, các biến dạng record này không cần lưu trữ theo cách thông thường. Cũng như đối với bất kỳ ngôn ngữ lập trình hướng đối tượng nào khác, người dùng có thể tự khởi tạo các phương thức, chức năng được áp dụng riêng đối với từng loại dữ liệu khác nhau. Ví dụ:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">function PersonRec(p1,p2) {<br />    this.sNameLast= p1;<br />    this.sNameFirst=p2;<br />    ... <br />    //-------------------------------- add some methods; i.e., member functions<br />    this.GetFullName= function() {<br />       return( this.sNameFirst +&quot; &quot;+ this.sNameLast ); <br />    };</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">    this.toString= function() { <br />        var s=  &quot;Name:  &quot; + this.GetFullName() + &quot;\n&quot;;<br />        s+=     &quot;Age:   &quot; + this.nAge          + &quot;\n&quot;;<br />        if ( this.fIsParent ) {<br />            s+= &quot;Children: &quot;    + this.asChildren;<br />        }<br />        return( s );<br />    };<br />}</span></em></p><p>Chúng ta có thể dễ dàng thấy rằng thành phần Object.toString() đã có sẵn, nhưng chỉ hiển thị dữ liệu đầu ra theo dạng [Object object], không thực sự hữu ích cho lắm trong nhiều trường hợp, cách này chỉ phù hợp trong để viết các hàm ghi đè như trên, qua đó chúng ta có thể dễ dàng hiển thị dữ liệu trong quá trình debug.</p><h2>Sử dụng mảng Record kết hợp:</h2><p>1 đối tượng mẫu chúng ta đã khởi tạo ở đây thường được sử dụng như 1 thành phần trong mảng dữ liệu, tương tự như 1 bản ghi, và đây là khái niệm rất cơ bản về collection. Giả sử rằng chúng ta có 1 chuỗi dữ liệu được hiển thị dưới dạng menu d-rop – down, và khi người dùng chọn 1 thành phần, hệ thống sẽ tiến hành quá trình xác định trường dữ liệu tương ứng trong form.</p><p>Về bản chất, <strong>JavaScript </strong>sẽ thực hiện quá trình xác định dữ liệu qua <strong>AJAX</strong>, hoặc phân tích luồng thông tin qua trang web, hoặc đơn giản hơn là từ 1 file duy nhất nào đó. Đơn giản hơn, chúng ta có thể thực hiện quá trình này trước trong phần mã  nguồn:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var arPersons = [<br />   new PersonRec(&quot;Anderson&quot;, &quot;Adam&quot;, 35, true, [&quot;Andy&quot;,&quot;Alice&quot;] ),<br />   new PersonRec(&quot;Browne&quot;,   &quot;Bill&quot;, 25, false ),<br />   new PersonRec(&quot;Crawford&quot;, &quot;Carl&quot;, 45, true, [&quot;Caroline&quot;] )<br />];</span></em></p><p>Sau khi hoàn tất bước khởi tạo đối tượng mảng của các bản ghi tương ứng, chúng ta có thể dễ dàng “xâu chuỗi” toàn bộ bằng cú pháp JavaScript như sau:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var oCombo= document.getElementById(&#039;se-lectName&#039;); // a <se-lect /> element</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">oCombo.options.length=0;                // clear out the box<br />oCombo.options.length=arPersons.length; // prepare to repopulate</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">for (var j=0; j&lt;arPersons.length; j++) {<br />   oCombo.options[j].text= arPersons[j].sNameLast;<br />}</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">... later, see what&#039;s been se-lected ...</span></em></p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">var i= oCombo.se-lectedIndex;<br />alert( arPersons[i].sNameFirst +&quot; is &quot;+ arPersons[i].nAge );</span></em></p><p>Kết quả hiển thị của bảng dữ liệu sẽ có dạng như sau:</p><p style="text-align: center;"><img border="0" align="absMiddle" src="http://www.quantrimang.com.vn/photos/image/102011/25/collectionjava--03.jpg" /></p><p>Tạo chu kỳ hoạt động của các thành phần trong mảng, sau đó hiển thị giá trị các thuộc tính của đối tượng <strong>PersonRec </strong>như sau:</p><p style="margin-left: 40px;"><em><span style="font-family: Courier New;">function BuildOutputTable() {<br />    var sOut=&quot;<table border="2">&quot;;<br />    sOut +=&quot;<tr>&quot;;<br />    sOut +=&quot;<td>Last Name</td><td>First Name</td><td>Age</td><td># of Kids</td>&quot;<br />    sOut +=&quot;</tr>&quot;;<br />    for ( var j=0; j&lt;arPersons.length; j++ ) {<br />        var rP= arPersons[j];  // a PersonRec object<br />        sOut += &quot;<tr>&quot;;<br />        sOut += &quot;<td>&quot; +rP.sNameLast+         &quot;</td>&quot;;<br />        sOut += &quot;<td>&quot; +rP.sNameFirst+        &quot;</td>&quot;;<br />        sOut += &quot;<td>&quot; +rP.nAge+              &quot;</td>&quot;;<br />        sOut += &quot;<td>&quot; +rP.asChildren.length+ &quot;</td>&quot;;<br />        sOut += &quot;</tr>&quot;;<br />    }<br />    sOut += &quot;</table>&quot;;<br />    return(sOut);<br />}</span></em></p><p>Một số bài viết khác có liên quan đến chủ đề của chúng ta ngày hôm nay:</p><p> - <a href="http://www.quirksmode.org/js/associative.html" target="_blank">Objects as associative arrays</a></p><p> - <a target="_blank">Mastering Javascript Arrays</a></p><p> - <a target="_blank">Mastering JSON (JavaScript Object Notation)</a></p><p>Chúc các bạn thành công!</p>
		</div>
				<div id="author">
						<p>
				<strong>Tác giả:</strong>
				T.Anh (theo Experts Exchange)
			</p>
						<p>
				<strong>Nguồn tin:</strong>
				http://www.quantrimang.com.vn
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://mangvn.org/savefile/Thu-thuat-tin-hoc/Tim-hieu-ve-Collection-of-Record-trong-JavaScript-3190.html" title="Tìm hiểu về Collection of Record trong JavaScript">https://mangvn.org/savefile/Thu-thuat-tin-hoc/Tim-hieu-ve-Collection-of-Record-trong-JavaScript-3190.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; MangVN
		</div>
		<div id="contact">
			<a href="mailto:admin@vinades.vn">admin@vinades.vn</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://mangvn.org/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
<script src="https://mangvn.org/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4c_b41EI",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=1,nv_recaptcha_ver=2,nv_recaptcha_sitekey="6LfaEikpAAAAAB7BnT8L5ijh2CCG0esJquuWj9ZJ",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://mangvn.org/assets/js/language/vi.js"></script>
<script src="https://mangvn.org/assets/js/DOMPurify/purify3.js"></script>
<script src="https://mangvn.org/assets/js/global.js"></script>
<script src="https://mangvn.org/assets/js/site.js"></script>
<script src="https://mangvn.org/themes/default/js/news.js"></script>
<script src="https://mangvn.org/themes/default/js/main.js"></script>
<script src="https://mangvn.org/themes/default/js/custom.js"></script>
<script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "Organization",
            "url": "https://mangvn.org",
            "logo": "https://mangvn.org/uploads/logo-mangvn.png"
        }
        </script>
<script src="https://mangvn.org/themes/default/js/bootstrap.min.js"></script>
</body>
</html>