1. เข้าใจอาร์เรย์
อาร์เรย์คือการรวบรวมข้อมูลบางประเภทและชนิดข้อมูลอาจเป็นจำนวนเต็มสตริงหรือแม้แต่วัตถุ
JavaScript ไม่รองรับอาร์เรย์หลายมิติ แต่เนื่องจากอาร์เรย์สามารถมีวัตถุ (อาร์เรย์เป็นวัตถุ) อาร์เรย์สามารถบรรลุฟังก์ชั่นที่คล้ายกับอาร์เรย์หลายมิติโดยทำรังซึ่งกันและกัน
1.1 การกำหนดอาร์เรย์
ประกาศอาร์เรย์ที่มี 10 องค์ประกอบ:
การคัดลอกรหัสมีดังนี้: var a = อาร์เรย์ใหม่ (10);
ในเวลานี้พื้นที่หน่วยความจำได้เปิดขึ้นสำหรับ A ซึ่งมี 10 องค์ประกอบและเรียกด้วยชื่ออาร์เรย์บวก [subscript] ตัวอย่างเช่น A [2] แต่องค์ประกอบไม่ได้เริ่มต้นในเวลานี้และการโทรจะกลับมาที่ไม่ได้กำหนด
รหัสต่อไปนี้กำหนดอาร์เรย์ตัวแปรและกำหนดค่า
การคัดลอกรหัสมีดังนี้:
var a = new Array ();
A [0] = 10;
A [1] = "AAA";
A [2] = 12.6;
ดังที่ได้กล่าวไว้ข้างต้นวัตถุสามารถวางไว้ในอาร์เรย์เช่นรหัสต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
var a = new Array ();
a [0] = true;
a [1] = document.getElementById ("ข้อความ");
a [2] = {x: 11, y: 22};
A [3] = New Array ();
สามารถกำหนดอาร์เรย์ได้โดยตรงเมื่ออินสแตนซ์ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
var a = อาร์เรย์ใหม่ (1, 2, 3, 4, 5);
var b = [1, 2, 3, 4, 5];
A และ B เป็นทั้งอาร์เรย์ แต่ B ใช้การประกาศโดยนัยและสร้างอินสแตนซ์อื่น ในเวลานี้หากใช้การแจ้งเตือน (a == b) เท็จจะถูกโผล่ขึ้นมา
1.2 อาร์เรย์หลายมิติ
ในความเป็นจริง JavaScript ไม่รองรับอาร์เรย์หลายมิติ ใน ASP คุณสามารถใช้ Dim A (10,3) เพื่อกำหนดอาร์เรย์หลายมิติ ใน JavaScript หากคุณใช้ var a = อาร์เรย์ใหม่ (10,3) คุณจะรายงานข้อผิดพลาด
แต่ดังที่ได้กล่าวไว้ก่อนหน้านี้อาร์เรย์สามารถมีวัตถุได้ดังนั้นองค์ประกอบในอาร์เรย์สามารถประกาศเป็นอาร์เรย์ได้เช่น:
การคัดลอกรหัสมีดังนี้:
var a = new Array ();
A [0] = new Array ();
A [0] [0] = 1;
การแจ้งเตือน (a [0] [0]); // ป๊อป 1
กำหนดค่าเมื่อประกาศ
การคัดลอกรหัสมีดังนี้:
var a = อาร์เรย์ใหม่ ([1,2,3], [4,5,6], [7,8,9]);
var b = [[1,2,3], [4,5,6], [7,8,9]];
เอฟเฟกต์เดียวกันคือการใช้อินสแตนซ์ทั่วไป B คือการประกาศโดยนัยและผลลัพธ์คืออาร์เรย์หลายมิติ
1.3 ตัวอักษรอาเรย์
ฉันไม่รู้จริงๆว่ามันเรียกว่าเป็นภาษาจีนอะไร
เมื่อพูดถึงอาร์เรย์เราต้องพูดคุยเกี่ยวกับตัวอักษรอาร์เรย์ อาร์เรย์เป็นวัตถุพิเศษจริงๆ วัตถุมีคุณสมบัติและวิธีการที่ไม่ซ้ำกัน ค่าและการโทรได้รับผ่านชื่อวัตถุแอตทริบิวต์วัตถุและวิธีการ () ในขณะที่อาร์เรย์ใช้ตัวห้อยเพื่อรับค่า ตัวอักษรอาร์เรย์มีความคล้ายคลึงกับอาร์เรย์มากและเป็นคอลเลกชันของประเภทข้อมูลบางชนิด อย่างไรก็ตามตัวอักษรอาร์เรย์เป็นวัตถุพื้นฐานการประกาศและการโทรแตกต่างจากอาร์เรย์:
การคัดลอกรหัสมีดังนี้:
var aa = วัตถุใหม่ ();
aa.x = "cat";
aa.y = "ซันนี่";
การแจ้งเตือน (aa.x); // ป๊อปอัพแมว
สร้างวัตถุง่ายๆ การโทรทั่วไปคือผ่าน AA.X หากได้รับการปฏิบัติเป็นตัวอักษรอาร์เรย์ Cat จะปรากฏขึ้นพร้อมกับการแจ้งเตือน (aa ["x"])
การคัดลอกรหัสมีดังนี้:
var a = {x: "cat", y: "sunny"};
การแจ้งเตือน (a ["y"]); // ป๊อปอัพซันนี่
นี่เป็นอีกวิธีหนึ่งในการสร้างวัตถุและผลลัพธ์ก็เหมือนกัน
2. การทำงานขององค์ประกอบอาร์เรย์
ดังที่ได้กล่าวไว้ข้างต้นองค์ประกอบสามารถอ่านและเขียนผ่านอาร์เรย์ [ตัวห้อย]
ช่วงของตัวห้อยคือ 0 (23 (ตัวยก 2) -1) เมื่อตัวห้อยเป็นลบจุดลอยตัวหรือค่าบูลีนอาร์เรย์จะถูกแปลงเป็นประเภทวัตถุโดยอัตโนมัติเช่น:
การคัดลอกรหัสมีดังนี้:
var b = new Array ();
b [2.2] = "xxxxx";
การแจ้งเตือน (B [2.2]); //-> xxxxx
ในเวลานี้มันเทียบเท่ากับ b ["2.2"] = "xxxxx"
2.1 ลูปอาร์เรย์
การคัดลอกรหัสมีดังนี้:
var a = [1,2,3,4,5,6];
สำหรับ (var i = 0; i <a.length; i ++) {
การแจ้งเตือน (a [i]);
-
นี่คือสิ่งที่ใช้กันมากที่สุด หลังจากผ่านอาร์เรย์รหัสจะปรากฏขึ้น 1 ถึง 6 ในทางกลับกัน
มีอีกอันหนึ่งที่ใช้กันทั่วไป:
การคัดลอกรหัสมีดังนี้:
var a = [1,2,3,4,5,6];
สำหรับ (var e ใน a) {
การแจ้งเตือน (e);
-
หรือปรากฏขึ้น 1 ถึง 6 ในทางกลับกัน สำหรับ ... ในเป็นวัตถุที่ผ่านวัตถุ (อาร์เรย์เป็นวัตถุพิเศษ) และใช้กับอาร์เรย์ เนื่องจากอาร์เรย์ไม่มีชื่อแอตทริบิวต์ค่าจะถูกส่งออกโดยตรง คำสั่งโครงสร้างนี้ใช้กับวัตถุเช่น:
การคัดลอกรหัสมีดังนี้:
var a = {x: 1, y: 2, z: 3};
สำหรับ (var e ใน a) {
การแจ้งเตือน (e + ":" + a [e]);
-
ในเวลานี้ E ใช้ชื่อแอตทริบิวต์เช่น x, x, y, x ในการรับค่าใช้ชื่ออาร์เรย์ [แอตทริบิวต์] ดังนั้น A [e] จึงเทียบเท่ากับ ["x"], [y "], a [z"], a ["z"]
2.2 ฟังก์ชั่นที่ใช้กันทั่วไปในอาร์เรย์
การต่อ
ผนวกอาเรย์หลังจากอาร์เรย์ที่มีอยู่และส่งคืนอาร์เรย์ใหม่โดยไม่ส่งผลกระทบต่ออาร์เรย์ที่มีอยู่:
การคัดลอกรหัสมีดังนี้:
var a = [123];
var b = "sunnycat";
var c = ["www", 21, "ido"];
var d = {x: 3.14, y: "sk"};
var e = [1,2,3,4, [5,6, [7,8]]];
การแจ้งเตือน (a.concat (b)); // -> 123, sunnycat
การแจ้งเตือน (a); // -> 123
การแจ้งเตือน (b.concat (c, d)); // -> sunnycatwww, 21, ido [วัตถุวัตถุ]
การแจ้งเตือน (c.concat (b)); // -> www, 21, ido, sunnycat
การแจ้งเตือน (e.concat (11,22,33) .Join (" #")); // -> 1 # 2 # 3 # 4 # 5,6,7,8 # 11 # 22 # 33
ควรสังเกตว่าสามารถใช้สำหรับอาร์เรย์หรือสตริงเท่านั้น หากเชื่อมต่อ (a) เป็นตัวเลขบูลีนหรือวัตถุจะมีการรายงานข้อผิดพลาด เมื่อสตริงเชื่อมต่อกับอาร์เรย์สตริงจะถูกเชื่อมต่อกับองค์ประกอบแรกของอาร์เรย์ลงในองค์ประกอบใหม่และสตริงที่เชื่อมต่อจะถูกเพิ่มด้วยสตริง (ฉันไม่ทราบเหตุผลนี้โปรดเปิดเผยหากคุณคุ้นเคยกับข้อมูล) สำหรับผู้ที่มีอาร์เรย์และวัตถุให้เก็บไว้เหมือนเดิมหลังจากการเชื่อมต่อ
เข้าร่วม
เชื่อมต่ออาร์เรย์เข้ากับสตริงด้วยตัวเว้นวรรคที่ระบุ:
การคัดลอกรหัสมีดังนี้:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
Lert (A.Join (",")); // -> A, B, C, D, E, F, G เทียบเท่ากับ A.ToString ()
การแจ้งเตือน (a.join ("x")); // -> axbxcxdxexfxg
นี่เป็นเรื่องง่ายที่จะเข้าใจ แต่ควรสังเกตว่ามันถูกแปลงเป็นอาร์เรย์หนึ่งมิติเท่านั้น หากมีอาร์เรย์ในอาร์เรย์จะไม่ใช้สตริงที่ระบุโดยการเข้าร่วม แต่ใช้ toString เริ่มต้น () ตัวอย่างเช่นตัวอย่างเช่น
การคัดลอกรหัสมีดังนี้:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', [11,22,33]];
การแจ้งเตือน (A.Join (" *")); // -> a * b * c * d * e * f * g * 11,22,33
หมายเหตุ: อาร์เรย์ในอาร์เรย์ไม่ได้ใช้สำหรับการเชื่อมต่อ *
โผล่
ลบองค์ประกอบสุดท้ายของอาร์เรย์และส่งคืนองค์ประกอบ
การคัดลอกรหัสมีดังนี้:
var a = ["aa", "bb", "cc"];
document.write (a.pop ()); // -> CC
document.write (a); // -> aa, bb
หมายเหตุ: หากอาร์เรย์ว่างเปล่าจะถูกส่งคืน
ดัน
เพิ่มอาร์เรย์ด้านหลังอาร์เรย์และส่งคืนความยาวใหม่ของอาร์เรย์
การคัดลอกรหัสมีดังนี้:
var a = ["aa", "bb", "cc"];
document.write (a.push ("dd")); // -> 4
document.write (a); // -> AA, BB, CC, DD
Document.write (A.Push ([1,2,3])); // -> 5
document.write (a); // -> AA, BB, CC, DD, 1,2,3
ความแตกต่างจาก CONCAT คือ CONCAT ไม่ส่งผลกระทบต่ออาร์เรย์ดั้งเดิมมันจะส่งคืนอาร์เรย์ใหม่โดยตรงในขณะที่ PUSH ปรับเปลี่ยนอาร์เรย์ดั้งเดิมโดยตรงซึ่งส่งคืนความยาวใหม่ของอาร์เรย์
เรียงลำดับ
การเรียงลำดับอาเรย์มาดูตัวอย่างก่อน
การคัดลอกรหัสมีดังนี้:
var a = [11,2,3,33445,5654,654, "ASD", "B"];
การแจ้งเตือน (a.sort ()); // -> 11,2,3,33445,5654,654, ASD, B
ผลลัพธ์ที่ได้คือสิ่งที่น่าประหลาดใจมากหรือไม่? ใช่การเรียงลำดับไม่ได้ขึ้นอยู่กับขนาดจำนวนเต็ม แต่ในการเปรียบเทียบสตริงซึ่งเป็นการเปรียบเทียบรหัส ANSI ของอักขระตัวแรกและตัวเล็กอยู่ด้านหน้า หากเป็นจริงจะมีการเปรียบเทียบอักขระที่สอง หากคุณต้องการเปรียบเทียบตามค่าจำนวนเต็มคุณสามารถทำได้
การคัดลอกรหัสมีดังนี้:
var a = [11,2,3,33445,5654,654];
A.Sort (ฟังก์ชั่น (a, b) {
กลับ A - B;
-
การแจ้งเตือน (a); // -> 2,3,11,654,5654,33445
วิธีการเรียงลำดับ () มีพารามิเตอร์เสริมซึ่งเป็นฟังก์ชันในรหัส นี่เป็นตัวอย่างง่ายๆ ไม่สามารถจัดเรียงได้ ผู้ที่ไม่ได้เป็นงวดจะต้องได้รับการตัดสินมากขึ้นดังนั้นฉันจะไม่พูดถึงเรื่องนี้ที่นี่
ย้อนกลับ
เรียงลำดับอาร์เรย์และเรียงลำดับ () แบบผกผันใช้ค่าตัวละครตัวแรก ASCII และเปรียบเทียบ
การคัดลอกรหัสมีดังนี้:
var a = [11,3,5,66,4];
การแจ้งเตือน (A.Reverse ()); // -> 4,66,5,3,11
หากอาร์เรย์มีอาร์เรย์ก็จะไม่แก้องค์ประกอบหากประมวลผลเป็นวัตถุ
การคัดลอกรหัสมีดังนี้:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', [4,11,33]];
การแจ้งเตือน (A.Reverse ()); // -> 4,11,33, G, F, E, D, C, B, A
การแจ้งเตือน (A.Join (" *")); // -> 4,11,33 * g * f * e * d * c * b * a
มันควรจะเป็น 11 สุดท้ายเพราะ 4, 11, 33 ถือเป็นการเปรียบเทียบวัตถุที่สมบูรณ์ดังนั้นพวกเขาจึงได้รับการจัดอันดับก่อน
หากคุณไม่เข้าใจให้ใช้ join () เพื่อสตริงเข้าด้วยกันและมันจะชัดเจนมากขึ้น
กะ
ลบองค์ประกอบแรกของอาร์เรย์และส่งคืนองค์ประกอบซึ่งคล้ายกับป๊อป
การคัดลอกรหัสมีดังนี้:
var a = ["aa", "bb", "cc"];
document.write (a.shift ()); // -> AA
document.write (a); // -> bb, cc
หมายเหตุ: เมื่ออาร์เรย์ว่างเปล่าจะถูกส่งคืน
ไม่ยิง
ตรงกันข้ามกับการเปลี่ยนให้เพิ่มองค์ประกอบที่ด้านหน้าของอาร์เรย์และส่งคืนความยาวใหม่ของอาร์เรย์
การคัดลอกรหัสมีดังนี้:
var a = ["aa", "bb", "cc"];
document.write (a.unshift (11)); // -> 4 หมายเหตุ: ไม่ได้กำหนดจะถูกส่งคืนใน IE
document.write (a); // -> 11, AA, BB, CC
document.write (a.unshift ([11,22])); // -> 5
document.write (a); // -> 11,22,11, AA, BB, CC
document.write (a.unshift ("cat")); // -> 6
document.write (a); // -> cat, 11,22,11, aa, bb, cc
ให้ความสนใจกับวิธีนี้ที่ไม่ได้กำหนดจะถูกส่งกลับใน IE ซึ่งดูเหมือนจะเป็นข้อผิดพลาดกับ Microsoft ฉันสามารถเล่นความยาวใหม่ของอาร์เรย์ได้อย่างถูกต้องภายใต้ Firefox
ชิ้น
ส่งคืนชิ้นส่วนอาร์เรย์
การคัดลอกรหัสมีดังนี้:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
การแจ้งเตือน (A.Slice (1,2)); // -> b
การแจ้งเตือน (a.slice (2)); // -> C, D, E, F, G
การแจ้งเตือน (a.slice (-4)); // -> D, E, F, G
การแจ้งเตือน (a.slice (-2, -6)); // -> ว่างเปล่า
A.Slice (1,2), เริ่มต้นจากตัวห้อยคือ 1 ถึงตัวห้อยคือ 2 โปรดทราบว่าองค์ประกอบที่มีตัวห้อยไม่รวมอยู่ด้วย
หากมีเพียงพารามิเตอร์เดียวค่าเริ่มต้นจะอยู่ที่ส่วนท้ายของอาร์เรย์
-4 หมายถึงองค์ประกอบสุดท้ายที่สี่ดังนั้นองค์ประกอบทั้งสี่ในการนับถอยหลังจะถูกส่งคืน
บรรทัดสุดท้ายเริ่มจากที่สองถึงสุดท้าย เนื่องจากมันถูกดักจับในภายหลังจึงเป็นไปไม่ได้ที่จะดึงองค์ประกอบก่อนหน้านี้ดังนั้นจึงส่งคืนอาร์เรย์ที่ว่างเปล่า หากมีการเปลี่ยนเป็น A.Slice (-6, -2) มันจะส่งคืน B, C, D, E
ประกบกัน
ลบองค์ประกอบของชิ้นส่วนออกจากอาร์เรย์และส่งคืนองค์ประกอบที่ถูกลบ
การคัดลอกรหัสมีดังนี้:
var a = [1,2,3,4,5,6,7,7,8,9];
document.write (a.splice (3,2)); // -> 4,5
document.write (a); // -> 1,2,3,6,7,8,9
document.write (a.splice (4)); // -> 7,8,9 หมายเหตุ: ส่งคืนว่างภายใต้ IE
document.write (a); // -> 1,2,3,6
document.write (a.splice (0,1)); // -> 1
document.write (a); // -> 2,3,6
document.write (a.splice (1,1, ["aa", "bb", "cc"])); // -> 3
document.write (a); // -> 2, AA, BB, CC, 6,7,8,9
document.write (a.splelice (1,2, "ee"). เข้าร่วม ("#")); // -> AA, BB, CC#6
document.write (a); // -> 2, EE, 7,8,9
document.write (a.splice (1,2, "cc", "aa", "tt"). เข้าร่วม ("#")); // -> ee#7
document.write (a); // -> 2, CC, AA, TT, 8,9
โปรดทราบว่าวิธีนี้อยู่ใน IE พารามิเตอร์ที่สองเป็นสิ่งจำเป็น หากไม่ได้เติมเต็มมันจะเริ่มต้นเป็น 0 ตัวอย่างเช่น A.SPLICE (4) และใน IE มันจะกลับมาว่าง เอฟเฟกต์เทียบเท่ากับ A.Splice (4,0)
การตบเบา ๆ
แปลงอาร์เรย์เป็นสตริงไม่ใช่แค่อาร์เรย์ แต่วัตถุทั้งหมดสามารถใช้วิธีนี้ได้
การคัดลอกรหัสมีดังนี้:
var a = [5,6,7,8,9, ["a", "bb"], 100];
document.write (a.toString ()); // -> 5,6,7,8,9, a, bb, 100
var b = วันที่ใหม่ ()
document.write (b.toString ()); // -> วันเสาร์ 8 ส.ค. 17:08:32 UTC+0800 2009
var c = ฟังก์ชัน {
การแจ้งเตือน;
-
document.write (c.toString ()); // -> ฟังก์ชั่น {แจ้งเตือน; -
ค่าบูลีนส่งคืนชื่อวัตถุวัตถุจริงหรือเท็จและวัตถุวัตถุวัตถุ]
เมื่อเทียบกับวิธีการเข้าร่วม (), เข้าร่วม () แทนที่อาร์เรย์หนึ่งมิติเท่านั้นในขณะที่ toString () ระนาบอาร์เรย์ทั้งหมดอย่างสมบูรณ์ (โดยไม่คำนึงถึงมิติเดียวหรือหลายมิติ)
ในเวลาเดียวกันวิธีนี้สามารถใช้สำหรับการแปลงทศนิยม, ไบนารี, Ength และ hexadecimal เช่น:
การคัดลอกรหัสมีดังนี้:
var a = [5,6,7,8,9, "a", "bb", 100];
สำหรับ (var i = 0; i <a.length; i ++) {
document.write (a [i] .tostring () + "ไบนารีคือ" + a [i] .tostring (2) + ", octal คือ" + a [i] .tostring (8) + ", hexadecimal คือ" + a [i] .tostring (16)); // -> 4,5
-
ผลลัพธ์ผลลัพธ์:
การคัดลอกรหัสมีดังนี้:
ไบนารีของ 5 คือ 101, แปดค่าคือ 5 และเลขฐานสิบหกคือ 5
ไบนารีของ 6 คือ 110, octal คือ 6 และ hexadecimal คือ 6
ไบนารีของ 7 คือ 111, octal คือ 7 และ hexadecimal คือ 7
ไบนารีของ 8 คือ 1,000, แปด octal คือ 10 และ hexadecimal คือ 8
ไบนารีของ 9 คือ 1001, octal คือ 11 และ hexadecimal คือ 9
ไบนารีของ A คือ a, octal เป็น a และ hexadecimal คือ a
ไบนารีของ BB คือ BB, Octal คือ BB และ Hexadecimal คือ BB
ไบนารีของ 100 คือ 1100100, octal คือ 144 และ hexadecimal คือ 64
การแปลงสามารถทำได้ในองค์ประกอบเท่านั้น หากอาร์เรย์ทั้งหมดถูกแปลงอาร์เรย์จะถูกส่งคืนเหมือนเดิม
tolocalestring
ส่งคืนสตริงรูปแบบโลคัลส่วนใหญ่ใช้กับวัตถุวันที่
การคัดลอกรหัสมีดังนี้:
var a = วันที่ใหม่ ();
document.write (a.toString ()); // -> วันเสาร์ 8 ส.ค. 17:28:36 UTC+0800 2009
document.write (a.tolocalestring ()); // -> 8 สิงหาคม 2552 17:28:36
document.write (a.tolocaledatestring ()); // -> 8 สิงหาคม 2552
ความแตกต่างคือ ToString () ส่งคืนรูปแบบมาตรฐานและ tolocalestring () ส่งคืนวันที่เต็มรูปแบบของรูปแบบท้องถิ่น (ใน [แผงควบคุม] >> [ตัวเลือกภูมิภาคและภาษา] โดยการปรับเปลี่ยน [เวลา] และ [วันที่ยาว]), tolocaledatestring ()
คุณค่าของ
ส่งคืนค่าดั้งเดิมที่แตกต่างกันตามวัตถุที่แตกต่างกัน หากใช้สำหรับเอาต์พุตมันจะคล้ายกับ toString () อย่างไรก็ตาม toString () ส่งคืนประเภทสตริงและค่าของ () ส่งคืนประเภทวัตถุดั้งเดิม
การคัดลอกรหัสมีดังนี้:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var b = วันที่ใหม่ ();
var c = true;
var d = function () {
การแจ้งเตือน ("sunnycat");
-
document.write (a.valueof ()); // -> 1,2,3,4,5,6,7,8,9
document.write (typeof (a.valueof ())); // -> วัตถุ
document.write (b.valueof ()); // -> 1249874470052
document.write (typeof (b.valueof ())); // -> หมายเลข
document.write (c.valueof ()); // -> จริง
document.write (typeof (c.valueof ())); // -> บูลีน
document.write (d.valueof ()); // -> function () {Alert ("sunnycat"); -
document.write (typeof (d.valueof ())); // -> ฟังก์ชั่น
อาร์เรย์ยังเป็นวัตถุดังนั้น typeof (a.valueof ()) ส่งคืนวัตถุและอาร์เรย์หลายมิติที่ส่งคืนยังคงอยู่
การคัดลอกรหัสมีดังนี้:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var aa = a.valueof ();
document.write (aa [3] [3] [1]); // -> 8
วัตถุวันที่ส่งคืนจำนวนมิลลิวินาทีตั้งแต่วันที่ 1 มกราคม 1970 และวัตถุคณิตศาสตร์และข้อผิดพลาดไม่มีวิธีการที่มีค่า