การเพิ่มและการลบองค์ประกอบอาร์เรย์ 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, ...
เมื่อล้างอาร์เรย์เพียงแค่ผ่าน StartIndex
หากองค์ประกอบทั้งหมดไม่ถูกลบให้ส่งพารามิเตอร์ deleteCount
Splice ยังมีฟังก์ชั่นของการลบก่อนแล้วเพิ่มนั่นคือลบองค์ประกอบหลายอย่างก่อนจากนั้นเพิ่มองค์ประกอบหลายอย่างที่ตำแหน่งที่ถูกลบ จำนวนองค์ประกอบที่ถูกลบและเพิ่มจะต้องไม่เท่ากัน ในเวลานี้ยังใช้ DeleteCount
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; // unshift เดียวกัน
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);
-