การเพิ่มองค์ประกอบลงในอาร์เรย์ใน JavaScript เป็นปัญหาที่ง่ายมาก JavaScript มีฟังก์ชั่นดังกล่าวจำนวนมาก เราสามารถใช้ฟังก์ชั่นที่เป็นเจ้าของ JS เพื่อเพิ่มองค์ประกอบลงในอาร์เรย์ได้อย่างรวดเร็ว บทความนี้สรุปวิธีการของ JavaScript ต่อไปนี้สำหรับการเพิ่มอาร์เรย์
วิธีการของ arr.concat (arr2) มักใช้เพื่อผนวกอาร์เรย์ตัวอย่างมีดังนี้:
การคัดลอกรหัสมีดังนี้:
<script type = "text/javascript">
var arr = อาร์เรย์ใหม่ (3);
arr [0] = "ทดสอบอาร์เรย์ 1 คือ 1";
arr [1] = "ทดสอบอาร์เรย์ 1 คือ 2";
arr [2] = "ทดสอบอาร์เรย์ 1 คือ 3";
var arr2 = อาร์เรย์ใหม่ (3);
arr2 [0] = "ทดสอบอาร์เรย์ 2 คือ 1";
arr2 [1] = "ทดสอบอาร์เรย์ 2 คือ 2";
arr2 [2] = "ทดสอบอาร์เรย์ 2 คือ 3";
document.write (arr.concat (arr2)+"<br/>");
document.write (arr.concat ("ลุงของคุณ 2", "ลุงของคุณ 3")+"<br/>")
</script>
หลายคนสับสนเกี่ยวกับการเพิ่มและการลบองค์ประกอบอาร์เรย์ JS ตอนนี้ฉันจะให้รหัสทดสอบต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
var arr = new Array ();
arr [0] = "AAA";
arr [1] = "bbb";
arr [2] = "CCC";
//alert(arr.length);//3
arr.pop ();
//alert(arr.length);//2
//alert(Arr.arr.length-1hat) ;//bbb
arr.pop ();
//alert(arrdarr.length-1hat
//alert(arr.length);//1
var arr2 = new Array ();
//alert(arr2.length);//0
arr2 [0] = "AAA";
arr2 [1] = "bbb";
//alert(arr2.length);//2
arr2.pop ();
//alert(arr2.length);//1
arr2 = arr2.slice (0, arr2.length-1);
//alert(arr2.length);//0
arr2 [0] = "AAA";
arr2 [1] = "bbb";
arr2 [2] = "CCC";
arr2 = arr2.slice (0,1);
การแจ้งเตือน (arr2.length); // 1
การแจ้งเตือน (arr2 [0]); // aaa
การแจ้งเตือน (arr2 [1]); // undefined
Shift: ลบรายการแรกของอาร์เรย์ดั้งเดิมและส่งคืนค่าขององค์ประกอบที่ถูกลบ หากอาร์เรย์ว่างเปล่าให้ส่งคืนที่ไม่ได้กำหนด
var a = [1,2,3,4,5];
var b = a.shift (); // a: [2,3,4,5] b: 1
Unshift: เพิ่มพารามิเตอร์ไปยังจุดเริ่มต้นของอาร์เรย์ดั้งเดิมและส่งคืนความยาวของอาร์เรย์
var a = [1,2,3,4,5];
var b = a.unshift (-2, -1); // a: [-2, -1,1,2,3,4,5] b: 7
หมายเหตุ: ค่าส่งคืนการทดสอบใน IE6.0 นั้นไม่ได้กำหนดไว้เสมอและค่าการทดสอบผลตอบแทนใน FF2.0 คือ 7 ดังนั้นค่าส่งคืนของวิธีนี้ไม่น่าเชื่อถือ เมื่อคุณต้องการใช้ค่าส่งคืนคุณสามารถใช้ splice แทนวิธีนี้
ป๊อป: ลบรายการสุดท้ายของอาร์เรย์ดั้งเดิมและส่งคืนค่าขององค์ประกอบที่ถูกลบ หากอาร์เรย์ว่างเปล่าให้ส่งคืนที่ไม่ได้กำหนด
var a = [1,2,3,4,5];
var b = a.pop (); // a: [1,2,3,4] b: 5 // ถ้าคุณไม่จำเป็นต้องกลับมาเพียงแค่เรียกมันโดยตรง
Push: เพิ่มพารามิเตอร์ไปที่ส่วนท้ายของอาร์เรย์ดั้งเดิมและส่งคืนความยาวของอาร์เรย์
var a = [1,2,3,4,5];
var b = a.push (6,7); // a: [1,2,3,4,5,6,7] B: 7
CONCAT: ส่งคืนอาร์เรย์ใหม่ซึ่งประกอบด้วยการเพิ่มพารามิเตอร์ไปยังอาร์เรย์ดั้งเดิม
var a = [1,2,3,4,5];
var b = a.concat (6,7); // a: [1,2,3,4,5] B: [1,2,3,4,5,6,7]
Splice (เริ่ม, deleteCount, val1, val2, ... ): รายการ deleteCount จากตำแหน่งเริ่มต้นและแทรก val1, val2, ...
var a = [1,2,3,4,5];
var b = a.splice (2,2,7,8,9); // a: [1,2,7,8,9,5] b: [3,4]
var b = a.splice (0,1); // การเปลี่ยนแปลงเดียวกัน
A.Splice (0,0, -2, -1); var b = a.length; // unchift เดียวกัน
var b = a.splice (a.length-1,1); // ป๊อปเดียวกัน
A.Splice (A.Length, 0,6,7); var b = a.length; // ผลักดันเดียวกัน
ย้อนกลับ: ผกผันอาร์เรย์
var a = [1,2,3,4,5];
var b = a.reverse (); // a: [5,4,3,2,1] B: [5,4,3,2,1]
เรียงลำดับ (orderfunction): เรียงลำดับอาร์เรย์ตามพารามิเตอร์ที่ระบุ
var a = [1,2,3,4,5];
var b = a.sort (); // a: [1,2,3,4,5] B: [1,2,3,4,5]
Slice (เริ่มต้นสิ้นสุด): ส่งคืนอาร์เรย์ใหม่ที่ประกอบด้วยรายการจากตัวห้อยเริ่มต้นที่ระบุไปยังตัวห้อยปลายในอาร์เรย์ดั้งเดิม
var a = [1,2,3,4,5];
var b = a.slice (2,5); // a: [1,2,3,4,5] b: [3,4,5]
เข้าร่วม (ตัวคั่น): จัดกลุ่มองค์ประกอบของอาร์เรย์ลงในสตริงโดยมีตัวคั่นเป็นตัวคั่น หากละเว้นให้ใช้เครื่องหมายจุลภาคเป็นตัวคั่นตามค่าเริ่มต้น
var a = [1,2,3,4,5];
var b = a.join ("|"); // a: [1,2,3,4,5] b: "1 | 2 | 3 | 4 | 5"
นี่เป็นอีกวิธีหนึ่งในการใช้อาร์เรย์เพื่อจำลอง JavastringBuffer เพื่อประมวลผลสตริง:
-
* ฟังก์ชั่นการประมวลผลสตริง
-
ฟังก์ชัน StringBuffer ()
-
var arr = อาร์เรย์ใหม่;
this.append = function (str)
-
arr [arr.length] = str;
-
this.toString = function ()
-
return arr.join (""); // ping อาร์เรย์ผนวกลงในสตริง
-
-
วันนี้ฉันค้นพบทันทีว่าการเข้าร่วมเป็นวิธีที่ดีในการแปลงอาร์เรย์เป็นสตริงในแอปพลิเคชันดังนั้นฉันจึงห่อหุ้มพวกเขาไว้ในวัตถุและใช้:
-
* แปลงอาร์เรย์เป็นสตริงที่แยกด้วยสัญลักษณ์เฉพาะ
-
ฟังก์ชั่น ArrayToString (arr, ตัวคั่น)
-
ถ้า (ตัวคั่น) ตัวคั่น = ""; // ถ้าตัวคั่นเป็นโมฆะมันจะว่างเปล่าโดยค่าเริ่มต้น
return arr.oin (ตัวคั่น);
-
-
* ค้นหาสตริงที่มีอยู่ในอาร์เรย์
-
ฟังก์ชั่น arrayfindstring (arr, string)
-
var str = arr.oin ("");
return str.indexof (String);
-
ในที่สุดก็มีการทดสอบสำหรับเพื่อนที่ชอบเล่น a.push.apply (a, b); เมื่อต่อท้ายอาร์เรย์
A.push.apply (a, b); วิธีที่คิดด้วยตนเองนี้เจ๋งและคุณไม่จำเป็นต้องเขียน A for Loop และคุณยังไม่พบปัญหาใด ๆ จนถึงวันนี้ฉันจะพบหลุมเมื่อ B ฉันต้องการต่อท้ายเป็นอาร์เรย์ขนาดใหญ่
การคัดลอกรหัสมีดังนี้:
a = ใหม่อาร์เรย์ ();
b = อาร์เรย์ใหม่ (125624);
A.push.apply (a, b);
รหัสด้านบนพ่นข้อยกเว้นต่อไปนี้ภายใต้ MAC Chrome
uncaught rangeerror: เกินขนาดสแต็กการโทรสูงสุด
หากคุณเปลี่ยนอาร์เรย์เป็น b = อาร์เรย์ใหม่ (125623); คงจะดีถ้ามีองค์ประกอบที่เล็กกว่า ฉันทดสอบว่าเบราว์เซอร์อื่นมีอาร์เรย์ขนาดใหญ่เพื่อทำผิดพลาด แต่ค่าวิกฤตของเบราว์เซอร์ที่แตกต่างกันยังคงแตกต่างกัน
ข้อเสนอแนะที่ได้รับที่นี่คือการซื่อสัตย์และใช้งานได้จริงซึ่งไม่เพียง แต่สามารถหลีกเลี่ยงปัญหาข้อยกเว้นของอาร์เรย์ขนาดใหญ่ แต่ยังพิจารณาถึงประสิทธิภาพของ foreach ที่เร็วที่สุด