Phạm vi với bước javascript

Đối tượng

fruits[5] = "mango";
console.log(fruits[5]); // 'mango'
console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
console.log(fruits.length); // 6
9, giống như mảng trong các ngôn ngữ lập trình khác, cho phép lưu trữ một tập hợp nhiều mục dưới một tên biến duy nhất và có các thành viên cho

Show

    Trong JavaScript, các mảng không phải là nguyên thủy mà thay vào đó là các đối tượng

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    9 với các đặc điểm cốt lõi sau

    • Mảng JavaScript có thể thay đổi kích thước và có thể chứa kết hợp các loại dữ liệu khác nhau. (Khi những đặc điểm đó là không mong muốn, thay vào đó hãy sử dụng các mảng đã nhập. )
    • Mảng JavaScript không phải là mảng kết hợp và do đó, không thể truy cập các phần tử mảng bằng cách sử dụng chuỗi tùy ý làm chỉ mục mà phải được truy cập bằng cách sử dụng số nguyên không âm (hoặc dạng chuỗi tương ứng của chúng) làm chỉ mục
    • Các mảng JavaScript không được lập chỉ mục. phần tử đầu tiên của một mảng nằm ở chỉ mục
      fruits.length = 10;
      console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
      console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
      console.log(fruits.length); // 10
      console.log(fruits[8]); // undefined
      
      1, phần tử thứ hai ở chỉ mục
      fruits.length = 10;
      console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
      console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
      console.log(fruits.length); // 10
      console.log(fruits[8]); // undefined
      
      2, v.v. — và phần tử cuối cùng ở giá trị của thuộc tính
      fruits.length = 10;
      console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
      console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
      console.log(fruits.length); // 10
      console.log(fruits[8]); // undefined
      
      3 của mảng trừ đi
      fruits.length = 10;
      console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
      console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
      console.log(fruits.length); // 10
      console.log(fruits[8]); // undefined
      
      2
    • JavaScript tạo bản sao nông. (Tất cả các thao tác sao chép tích hợp sẵn tiêu chuẩn với bất kỳ đối tượng JavaScript nào đều tạo ra các bản sao nông, thay vì các bản sao sâu)

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    9 các đối tượng không thể sử dụng các chuỗi tùy ý làm chỉ mục phần tử (như trong một mảng kết hợp) mà phải sử dụng các số nguyên không âm (hoặc dạng chuỗi tương ứng của chúng). Việc đặt hoặc truy cập thông qua các số không phải là số nguyên sẽ không đặt hoặc truy xuất một phần tử từ chính danh sách mảng, nhưng sẽ đặt hoặc truy cập một biến được liên kết với mảng đó. Các thuộc tính đối tượng của mảng và danh sách các phần tử mảng là riêng biệt và không thể áp dụng các thuộc tính của mảng cho các thuộc tính đã đặt tên này

    Các phần tử mảng là các thuộc tính của đối tượng giống như cách mà

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    6 là một thuộc tính (tuy nhiên, để cụ thể,
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    7 là một phương thức). Tuy nhiên, cố gắng truy cập một phần tử của mảng như sau sẽ gây ra lỗi cú pháp vì tên thuộc tính không hợp lệ

    console.log(arr.0); // a syntax error
    

    Cú pháp JavaScript yêu cầu các thuộc tính bắt đầu bằng một chữ số được truy cập bằng cách sử dụng thay vì ký hiệu dấu chấm. Cũng có thể trích dẫn các chỉ số mảng (e. g. ,

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    8 thay vì
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    9), mặc dù thường không cần thiết

    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    0 trong
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    9 được công cụ JavaScript ép buộc thành một chuỗi thông qua chuyển đổi ngầm định
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    6. Kết quả là,
    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    3 và
    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    4 sẽ đề cập đến hai vị trí khác nhau trên đối tượng
    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    5 và ví dụ sau đây có thể là
    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    6

    console.log(years["2"] !== years["02"]);
    

    Chỉ

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    8 là một chỉ số mảng thực tế.
    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    8 là một thuộc tính chuỗi tùy ý sẽ không được truy cập trong phép lặp mảng

    Thuộc tính

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 và thuộc tính số của một mảng JavaScript được kết nối

    Một số phương thức mảng tích hợp sẵn (e. g. ,

    method(callbackFn, thisArg)
    
    0,
    method(callbackFn, thisArg)
    
    1,
    method(callbackFn, thisArg)
    
    2, v.v. ) tính đến giá trị của thuộc tính
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 của một mảng khi chúng được gọi

    Các phương pháp khác (e. g. ,

    method(callbackFn, thisArg)
    
    4,
    method(callbackFn, thisArg)
    
    5, v.v. ) cũng dẫn đến việc cập nhật thuộc tính
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 của một mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    

    Khi đặt thuộc tính trên mảng JavaScript khi thuộc tính là chỉ mục mảng hợp lệ và chỉ mục đó nằm ngoài giới hạn hiện tại của mảng, công cụ sẽ cập nhật thuộc tính

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 của mảng tương ứng

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    

    Tăng

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    

    Tuy nhiên, việc giảm thuộc tính

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 sẽ xóa các phần tử

    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    

    Điều này được giải thích thêm trên trang

    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    0

    Các vị trí trống hoạt động không nhất quán giữa các phương thức mảng. Nói chung, các phương thức cũ hơn sẽ bỏ qua các vị trí trống, trong khi các phương thức mới hơn coi chúng là

    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    1

    Trong số các phương thức lặp qua nhiều phần tử, các phương thức sau đây thực hiện kiểm tra

    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    2 trước khi truy cập chỉ mục và không kết hợp các vị trí trống với
    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    1

    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      4
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      5
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      6
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      7
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      8
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      9
    • Array.prototype.flat.call({}); // []
      
      0
    • method(callbackFn, thisArg)
      
      2
    • Array.prototype.flat.call({}); // []
      
      2
    • Array.prototype.flat.call({}); // []
      
      3
    • Array.prototype.flat.call({}); // []
      
      4
    • Array.prototype.flat.call({}); // []
      
      5
    • Array.prototype.flat.call({}); // []
      
      6
    • method(callbackFn, thisArg)
      
      1
    • Array.prototype.flat.call({}); // []
      
      8
    • Array.prototype.flat.call({}); // []
      
      9
    • method(callbackFn, thisArg)
      
      5

    Để biết chính xác cách họ xử lý các vị trí trống, hãy xem trang cho từng phương pháp

    Các phương pháp này xử lý các vị trí trống như thể chúng là

    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    1

    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      2
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      3
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      4
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      5
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      6
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      7
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      8 Thử nghiệm
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      9 Thử nghiệm
    • console.log(years["2"] !== years["02"]);
      
      00
    • method(callbackFn, thisArg)
      
      0
    • console.log(years["2"] !== years["02"]);
      
      02
    • console.log(years["2"] !== years["02"]);
      
      03
    • console.log(years["2"] !== years["02"]);
      
      04

    Một số phương thức không thay đổi mảng hiện có mà phương thức được gọi, mà thay vào đó trả về một mảng mới. Họ làm như vậy bằng cách truy cập đầu tiên vào

    console.log(years["2"] !== years["02"]);
    
    05 để xác định hàm tạo sẽ sử dụng cho mảng mới. Mảng mới được xây dựng sau đó được phổ biến với các phần tử. Sao chép luôn xảy ra một cách nông cạn — phương thức không bao giờ sao chép bất kỳ thứ gì ngoài mảng được tạo ban đầu. Các phần tử của (các) mảng ban đầu được sao chép vào mảng mới như sau

    • Các đối tượng. tham chiếu đối tượng được sao chép vào mảng mới. Cả mảng ban đầu và mảng mới đều đề cập đến cùng một đối tượng. Nghĩa là, nếu một đối tượng được tham chiếu được sửa đổi, các thay đổi sẽ hiển thị đối với cả mảng mới và mảng ban đầu
    • Các loại nguyên thủy như chuỗi, số và booleans (không phải đối tượng
      console.log(years["2"] !== years["02"]);
      
      06,
      console.log(years["2"] !== years["02"]);
      
      07 và
      console.log(years["2"] !== years["02"]);
      
      08). giá trị của chúng được sao chép vào mảng mới

    Các phương thức khác thay đổi mảng mà phương thức được gọi, trong trường hợp đó, giá trị trả về của chúng sẽ khác nhau tùy thuộc vào phương thức. đôi khi là tham chiếu đến cùng một mảng, đôi khi là độ dài của mảng mới

    Các phương pháp sau tạo mảng mới với

    console.log(years["2"] !== years["02"]);
    
    09

    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      4
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      7
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      8
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      9
    • Array.prototype.flat.call({}); // []
      
      3
    • method(callbackFn, thisArg)
      
      1
    • method(callbackFn, thisArg)
      
      5 (để xây dựng mảng các phần tử đã loại bỏ được trả về)

    Lưu ý rằng

    const a = { length: 0.7 };
    Array.prototype.push.call(a);
    console.log(a.length); // 0
    
    8 và
    const a = { length: 0.7 };
    Array.prototype.push.call(a);
    console.log(a.length); // 0
    
    9 không sử dụng
    console.log(years["2"] !== years["02"]);
    
    09 để tạo mảng mới cho mỗi mục nhập nhóm, mà luôn sử dụng hàm tạo
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    9 đơn giản. Về mặt khái niệm, chúng cũng không phải là phương pháp sao chép

    Các phương pháp sau đây thay đổi mảng ban đầu

    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      5
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      3
    • console.log(years["2"] !== years["02"]);
      
      23
    • method(callbackFn, thisArg)
      
      4
    • Array.prototype.flat.call({}); // []
      
      6
    • console.log(years["2"] !== years["02"]);
      
      26
    • Array.prototype.flat.call({}); // []
      
      9
    • method(callbackFn, thisArg)
      
      5
    • console.log(years["2"] !== years["02"]);
      
      29

    Nhiều phương thức mảng lấy hàm gọi lại làm đối số. Hàm gọi lại được gọi tuần tự và nhiều nhất một lần cho mỗi phần tử trong mảng và giá trị trả về của hàm gọi lại được sử dụng để xác định giá trị trả về của phương thức. Tất cả đều có chung chữ ký

    method(callbackFn, thisArg)
    

    Trường hợp

    console.log(years["2"] !== years["02"]);
    
    30 có ba đối số

    console.log(years["2"] !== years["02"]);
    
    31

    Phần tử hiện tại đang được xử lý trong mảng

    console.log(years["2"] !== years["02"]);
    
    32

    Chỉ số của phần tử hiện tại đang được xử lý trong mảng

    console.log(years["2"] !== years["02"]);
    
    33

    Mảng mà phương thức được gọi

    Giá trị mà

    console.log(years["2"] !== years["02"]);
    
    30 dự kiến ​​sẽ trả về phụ thuộc vào phương thức mảng được gọi

    Đối số

    console.log(years["2"] !== years["02"]);
    
    35 (mặc định là
    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    1) sẽ được sử dụng làm giá trị
    console.log(years["2"] !== years["02"]);
    
    37 khi gọi
    console.log(years["2"] !== years["02"]);
    
    30. Giá trị
    console.log(years["2"] !== years["02"]);
    
    37 cuối cùng có thể quan sát được bởi
    console.log(years["2"] !== years["02"]);
    
    30 được xác định theo các quy tắc thông thường. nếu
    console.log(years["2"] !== years["02"]);
    
    30 là , thì các giá trị nguyên thủy của
    console.log(years["2"] !== years["02"]);
    
    37 được bao bọc trong các đối tượng và
    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    1/
    console.log(years["2"] !== years["02"]);
    
    44 được thay thế bằng
    console.log(years["2"] !== years["02"]);
    
    45. Đối số
    console.log(years["2"] !== years["02"]);
    
    35 không liên quan đối với bất kỳ
    console.log(years["2"] !== years["02"]);
    
    30 nào được xác định bằng hàm mũi tên, vì các hàm mũi tên không có ràng buộc
    console.log(years["2"] !== years["02"]);
    
    37 của riêng chúng

    Tất cả các phương thức lặp là và , mặc dù chúng hoạt động khác với

    Các phương pháp sau đây là lặp đi lặp lại

    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      6
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      7
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      4
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      5
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      6
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      7
    • const arrayLike = {
        0: "a",
        1: "b",
        length: 2,
      };
      console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
      
      9
    • Array.prototype.flat.call({}); // []
      
      0
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      8
    • const a = { length: 0.7 };
      Array.prototype.push.call(a);
      console.log(a.length); // 0
      
      9
    • Array.prototype.flat.call({}); // []
      
      3
    • Array.prototype.flat.call({}); // []
      
      8

    Cụ thể,

    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    6,
    const a = { length: 0.7 };
    Array.prototype.push.call(a);
    console.log(a.length); // 0
    
    4,
    const a = { length: 0.7 };
    Array.prototype.push.call(a);
    console.log(a.length); // 0
    
    5,
    const a = { length: 0.7 };
    Array.prototype.push.call(a);
    console.log(a.length); // 0
    
    6,
    const a = { length: 0.7 };
    Array.prototype.push.call(a);
    console.log(a.length); // 0
    
    7 và
    Array.prototype.flat.call({}); // []
    
    8 không phải lúc nào cũng gọi ___19_______30 trên mọi phần tử — chúng dừng lặp ngay khi giá trị trả về được xác định

    Có hai phương thức khác nhận hàm gọi lại và chạy hàm đó nhiều nhất một lần cho mỗi phần tử trong mảng, nhưng chúng có các dấu hiệu hơi khác so với các phương thức lặp thông thường (ví dụ: chúng không chấp nhận

    console.log(years["2"] !== years["02"]);
    
    35)

    • Array.prototype.flat.call({}); // []
      
      4
    • Array.prototype.flat.call({}); // []
      
      5

    Phương thức

    Array.prototype.flat.call({}); // []
    
    9 cũng có chức năng gọi lại, nhưng nó không phải là phương thức lặp. Nó thay đổi mảng tại chỗ, không chấp nhận
    console.log(years["2"] !== years["02"]);
    
    35 và có thể gọi lại nhiều lần trên một chỉ mục

    Các phương thức mảng luôn chung chung — chúng không truy cập bất kỳ dữ liệu nội bộ nào của đối tượng mảng. Họ chỉ truy cập các phần tử mảng thông qua thuộc tính

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 và các phần tử được lập chỉ mục. Điều này có nghĩa là chúng cũng có thể được gọi trên các đối tượng giống như mảng

    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    

    Chuẩn hóa thuộc tính độ dài

    Thuộc tính

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 được kẹp vào phạm vi từ 0 đến 253 - 1.
    console.log(years["2"] !== years["02"]);
    
    75 trở thành
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    1, vì vậy ngay cả khi không có
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 hoặc là
    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    1, nó vẫn hoạt động như thể nó có giá trị
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    1

    Array.prototype.flat.call({}); // []
    

    Một số phương thức mảng thiết lập thuộc tính

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 của đối tượng mảng. Họ luôn đặt giá trị sau khi chuẩn hóa, vì vậy,
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 luôn kết thúc bằng một số nguyên

    const a = { length: 0.7 };
    Array.prototype.push.call(a);
    console.log(a.length); // 0
    

    Các đối tượng giống như mảng

    Thuật ngữ đề cập đến bất kỳ đối tượng nào không ném trong quá trình chuyển đổi

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 được mô tả ở trên. Trong thực tế, đối tượng như vậy được cho là thực sự có thuộc tính
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 và có các phần tử được lập chỉ mục trong phạm vi
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    1 đến
    console.log(years["2"] !== years["02"]);
    
    85. (Nếu nó không có tất cả các chỉ số, nó sẽ có chức năng tương đương với một. )

    Nhiều đối tượng DOM giống như mảng — ví dụ,

    console.log(years["2"] !== years["02"]);
    
    86 và
    console.log(years["2"] !== years["02"]);
    
    87. Đối tượng
    console.log(years["2"] !== years["02"]);
    
    88 cũng giống như mảng. Bạn có thể gọi các phương thức mảng trên chúng ngay cả khi bản thân chúng không có các phương thức này

    console.log(years["2"] !== years["02"]);
    
    0

    console.log(years["2"] !== years["02"]);
    
    89

    Tạo một đối tượng

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    9 mới

    console.log(years["2"] !== years["02"]);
    
    91

    Trả về hàm tạo

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    9

    console.log(years["2"] !== years["02"]);
    
    93

    Tạo một thể hiện

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    9 mới từ một đối tượng dạng mảng hoặc đối tượng có thể lặp lại

    console.log(years["2"] !== years["02"]);
    
    95

    Trả về

    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    6 nếu đối số là một mảng hoặc
    console.log(years["2"] !== years["02"]);
    
    97 nếu không

    console.log(years["2"] !== years["02"]);
    
    98

    Tạo một phiên bản

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    9 mới với số lượng đối số thay đổi, bất kể số lượng hoặc loại đối số

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    00

    Phản ánh số lượng phần tử trong một mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    01

    Chứa các tên thuộc tính không có trong tiêu chuẩn ECMAScript trước phiên bản ES2015 và được bỏ qua cho mục đích ràng buộc câu lệnh

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    02

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    03

    Trả về mục mảng tại chỉ mục đã cho. Chấp nhận số nguyên âm, đếm ngược từ mục cuối cùng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    04

    Trả về một mảng mới là mảng đang gọi được nối với (các) mảng và/hoặc (các) giá trị khác

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    05

    Sao chép một chuỗi các phần tử mảng trong một mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    06

    Trả về một đối tượng trình lặp mảng mới chứa các cặp khóa/giá trị cho mỗi chỉ mục trong một mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    07

    Trả về

    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    6 nếu mọi phần tử trong mảng đang gọi thỏa mãn chức năng kiểm tra

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    09

    Điền vào tất cả các phần tử của một mảng từ chỉ mục bắt đầu đến chỉ mục kết thúc với một giá trị tĩnh

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    10

    Trả về một mảng mới chứa tất cả các phần tử của mảng đang gọi mà hàm lọc đã cung cấp trả về

    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    6

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    12

    Trả về giá trị của phần tử đầu tiên trong mảng thỏa mãn chức năng kiểm tra được cung cấp hoặc

    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    1 nếu không tìm thấy phần tử thích hợp

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    14

    Trả về chỉ mục của phần tử đầu tiên trong mảng thỏa mãn chức năng kiểm tra được cung cấp hoặc

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    15 nếu không tìm thấy phần tử thích hợp

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    16

    Trả về giá trị của phần tử cuối cùng trong mảng thỏa mãn chức năng kiểm tra được cung cấp hoặc

    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    1 nếu không tìm thấy phần tử phù hợp

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    18

    Trả về chỉ mục của phần tử cuối cùng trong mảng thỏa mãn chức năng kiểm tra được cung cấp hoặc

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    15 nếu không tìm thấy phần tử phù hợp

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    20

    Trả về một mảng mới với tất cả các phần tử của mảng con được nối vào nó theo cách đệ quy cho đến độ sâu đã chỉ định

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    21

    Trả về một mảng mới được hình thành bằng cách áp dụng hàm gọi lại đã cho cho từng phần tử của mảng đang gọi, sau đó làm phẳng kết quả theo một cấp

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    22

    Gọi một hàm cho từng phần tử trong mảng gọi

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    23 Thử nghiệm

    Nhóm các phần tử của một mảng thành một đối tượng theo các chuỗi được trả về bởi hàm kiểm tra

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    24 Thử nghiệm

    Nhóm các phần tử của một mảng thành một

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    25 theo các giá trị được hàm kiểm tra trả về

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    26

    Xác định xem mảng đang gọi có chứa giá trị hay không, trả về

    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    6 hoặc
    console.log(years["2"] !== years["02"]);
    
    97 nếu thích hợp

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    29

    Trả về chỉ mục đầu tiên (ít nhất) mà tại đó có thể tìm thấy một phần tử đã cho trong mảng đang gọi

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    30

    Nối tất cả các phần tử của một mảng thành một chuỗi

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    31

    Trả về một trình vòng lặp mảng mới chứa các khóa cho mỗi chỉ mục trong mảng đang gọi

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    32

    Trả về chỉ mục cuối cùng (lớn nhất) mà tại đó có thể tìm thấy một phần tử đã cho trong mảng đang gọi hoặc

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    15 nếu không tìm thấy phần tử nào

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    34

    Trả về một mảng mới chứa kết quả của việc gọi một hàm trên mọi phần tử trong mảng đang gọi

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    35

    Loại bỏ phần tử cuối cùng khỏi một mảng và trả về phần tử đó

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    36

    Thêm một hoặc nhiều phần tử vào cuối một mảng và trả về

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 mới của mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    38

    Thực thi hàm gọi lại "reducer" do người dùng cung cấp trên từng phần tử của mảng (từ trái sang phải), để giảm nó thành một giá trị

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    39

    Thực thi chức năng gọi lại "reducer" do người dùng cung cấp trên từng phần tử của mảng (từ phải sang trái), để giảm nó thành một giá trị

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    40

    Đảo ngược thứ tự của các phần tử của một mảng tại chỗ. (Đầu tiên trở thành cuối cùng, cuối cùng trở thành đầu tiên. )

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    41

    Loại bỏ phần tử đầu tiên khỏi một mảng và trả về phần tử đó

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    42

    Trích xuất một phần của mảng đang gọi và trả về một mảng mới

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    43

    Trả về

    fruits.length = 2;
    console.log(Object.keys(fruits)); // ['0', '1']
    console.log(fruits.length); // 2
    
    6 nếu ít nhất một phần tử trong mảng gọi đáp ứng chức năng kiểm tra được cung cấp

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    45

    Sắp xếp các phần tử của một mảng tại chỗ và trả về mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    46

    Thêm và/hoặc xóa phần tử khỏi mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    47

    Trả về một chuỗi được bản địa hóa đại diện cho mảng đang gọi và các phần tử của nó. Ghi đè phương thức

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    48

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    49

    Trả về một chuỗi đại diện cho mảng đang gọi và các phần tử của nó. Ghi đè phương thức

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    50

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    51

    Thêm một hoặc nhiều phần tử vào phía trước của một mảng và trả về

    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    3 mới của mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    53

    Trả về một đối tượng trình lặp mảng mới chứa các giá trị cho từng chỉ mục trong mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    54

    Bí danh cho phương thức

    console.log(years["2"] !== years["02"]);
    
    04 theo mặc định

    Phần này cung cấp một số ví dụ về hoạt động mảng phổ biến trong JavaScript

    Ghi chú. Nếu bạn chưa quen với kiến ​​thức cơ bản về mảng, trước tiên hãy cân nhắc đọc JavaScript First Steps. Mảng, which và bao gồm các ví dụ khác về hoạt động mảng phổ biến

    Ví dụ này cho thấy ba cách để tạo mảng mới. đầu tiên sử dụng , sau đó sử dụng hàm tạo

    console.log(years["2"] !== years["02"]);
    
    89 và cuối cùng sử dụng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    57 để tạo mảng từ một chuỗi

    console.log(years["2"] !== years["02"]);
    
    1

    Ví dụ này sử dụng phương thức

    method(callbackFn, thisArg)
    
    0 để tạo một chuỗi từ mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59

    console.log(years["2"] !== years["02"]);
    
    2

    Ví dụ này cho thấy cách truy cập các mục trong mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 bằng cách chỉ định số chỉ mục của vị trí của chúng trong mảng

    console.log(years["2"] !== years["02"]);
    
    3

    Ví dụ này sử dụng phương thức

    method(callbackFn, thisArg)
    
    2 để tìm vị trí (chỉ số) của chuỗi
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    62 trong mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59

    console.log(years["2"] !== years["02"]);
    
    4

    Ví dụ này chỉ ra hai cách để kiểm tra xem mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 có chứa
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    62 và
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    66 hay không. đầu tiên với phương pháp
    console.log(years["2"] !== years["02"]);
    
    00, sau đó với phương pháp
    method(callbackFn, thisArg)
    
    2 để kiểm tra giá trị chỉ mục không phải là
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    15

    console.log(years["2"] !== years["02"]);
    
    5

    Ví dụ này sử dụng phương thức

    method(callbackFn, thisArg)
    
    4 để nối một chuỗi mới vào mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59

    console.log(years["2"] !== years["02"]);
    
    6

    Ví dụ này sử dụng phương thức

    console.log(years["2"] !== years["02"]);
    
    23 để xóa phần tử cuối cùng khỏi mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59

    console.log(years["2"] !== years["02"]);
    
    7

    Ghi chú.

    console.log(years["2"] !== years["02"]);
    
    23 chỉ có thể được sử dụng để xóa phần tử cuối cùng khỏi một mảng. Để xóa nhiều mục khỏi phần cuối của một mảng, hãy xem ví dụ tiếp theo

    Ví dụ này sử dụng phương thức

    method(callbackFn, thisArg)
    
    5 để xóa 3 mục cuối cùng khỏi mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59

    console.log(years["2"] !== years["02"]);
    
    8

    Ví dụ này sử dụng phương thức

    method(callbackFn, thisArg)
    
    5 để cắt mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 xuống chỉ còn 2 mục đầu tiên của nó

    console.log(years["2"] !== years["02"]);
    
    9

    Ví dụ này sử dụng phương thức

    console.log(years["2"] !== years["02"]);
    
    26 để xóa mục đầu tiên khỏi mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    0

    Ghi chú. Chỉ có thể sử dụng

    console.log(years["2"] !== years["02"]);
    
    26 để xóa phần tử đầu tiên khỏi mảng. Để xóa nhiều mục khỏi đầu một mảng, hãy xem ví dụ tiếp theo

    Ví dụ này sử dụng phương thức

    method(callbackFn, thisArg)
    
    5 để xóa 3 mục đầu tiên khỏi mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    1

    Ví dụ này sử dụng phương thức

    console.log(years["2"] !== years["02"]);
    
    29 để thêm, tại chỉ mục
    fruits.length = 10;
    console.log(fruits); // ['banana', 'apple', 'peach', empty x 2, 'mango', empty x 4]
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 10
    console.log(fruits[8]); // undefined
    
    1, một mục mới vào mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 — biến nó thành mục đầu tiên mới trong mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    2

    Ví dụ này sử dụng phương pháp

    method(callbackFn, thisArg)
    
    5 để xóa chuỗi
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    62 khỏi mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 — bằng cách chỉ định vị trí chỉ mục của
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    62

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    3

    Ví dụ này sử dụng phương thức

    method(callbackFn, thisArg)
    
    5 để xóa các chuỗi
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    62 và
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    93 khỏi mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 — bằng cách chỉ định vị trí chỉ mục của
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    62, cùng với số lượng tổng số mục cần xóa

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    4

    Ví dụ này sử dụng phương thức

    method(callbackFn, thisArg)
    
    5 để thay thế 2 mục cuối cùng trong mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 bằng các mục mới

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    5

    Ví dụ này sử dụng vòng lặp

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    98 để lặp qua mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59, ghi nhật ký từng mục vào bảng điều khiển

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    6

    Nhưng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    98 chỉ là một trong nhiều cách để lặp qua bất kỳ mảng nào;

    Ví dụ này sử dụng phương thức

    Array.prototype.flat.call({}); // []
    
    0 để gọi một hàm trên từng phần tử trong mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59;

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    7

    Ví dụ này sử dụng phương thức

    const arrayLike = {
      0: "a",
      1: "b",
      length: 2,
    };
    console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'
    
    4 để hợp nhất mảng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 với mảng
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    12, để tạo ra một mảng
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    13 mới. Lưu ý rằng
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 và
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    12 không thay đổi

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    8

    Ví dụ này chỉ ra ba cách để tạo một mảng mới từ mảng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    59 hiện có. đầu tiên bằng cách sử dụng cú pháp trải rộng, sau đó bằng cách sử dụng phương thức
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    17, sau đó bằng cách sử dụng phương thức
    method(callbackFn, thisArg)
    
    1

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    9

    Tất cả các hoạt động sao chép mảng tích hợp sẵn (cú pháp trải rộng,

    console.log(years["2"] !== years["02"]);
    
    93,
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    42 và
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    04) tạo ra các bản sao nông. Thay vào đó, nếu bạn muốn có một bản sao sâu của một mảng, bạn có thể sử dụng
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    22 để chuyển đổi mảng đó thành một chuỗi JSON, sau đó
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    23 để chuyển đổi lại chuỗi thành một mảng mới hoàn toàn độc lập với mảng ban đầu

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    0

    Bạn cũng có thể tạo các bản sao sâu bằng cách sử dụng phương pháp

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    24, phương thức này có ưu điểm là cho phép các đối tượng có thể chuyển nhượng trong nguồn được chuyển sang bản sao mới, thay vì chỉ được sao chép

    Cuối cùng, điều quan trọng là phải hiểu rằng việc gán một mảng hiện có cho một biến mới không tạo ra một bản sao của mảng hoặc các phần tử của nó. Thay vào đó, biến mới chỉ là một tham chiếu hoặc bí danh cho mảng ban đầu; . Do đó, nếu bạn thực hiện bất kỳ thay đổi nào đối với giá trị của mảng ban đầu hoặc giá trị của biến mới, thì biến kia cũng sẽ thay đổi theo.

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    1

    Có thể sử dụng các phương thức

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    23 để nhóm các phần tử của một mảng, sử dụng hàm kiểm tra trả về một chuỗi cho biết nhóm của phần tử hiện tại

    Ở đây chúng ta có một mảng hàng tồn kho đơn giản chứa các đối tượng "thực phẩm" có

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    26 và
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    27

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    2

    Để sử dụng

    const a = { length: 0.7 };
    Array.prototype.push.call(a);
    console.log(a.length); // 0
    
    8, bạn cung cấp một hàm gọi lại được gọi với phần tử hiện tại, và tùy chọn chỉ mục và mảng hiện tại, đồng thời trả về một chuỗi cho biết nhóm của phần tử

    Mã bên dưới sử dụng hàm mũi tên để trả về

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    27 của mỗi phần tử mảng (điều này sử dụng để giải nén phần tử
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    27 khỏi đối tượng đã truyền). Kết quả là một đối tượng có các thuộc tính được đặt tên theo các chuỗi duy nhất được gọi lại. Mỗi thuộc tính được gán một mảng chứa các phần tử trong nhóm

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    3

    Lưu ý rằng đối tượng được trả về tham chiếu các phần tử giống như mảng ban đầu (không phải bản sao sâu). Việc thay đổi cấu trúc bên trong của các phần tử này sẽ được phản ánh trong cả mảng ban đầu và đối tượng được trả về

    Ví dụ: nếu bạn không thể sử dụng một chuỗi làm khóa, nếu thông tin cần nhóm được liên kết với một đối tượng có thể thay đổi, thì bạn có thể sử dụng

    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    24 để thay thế. Điều này rất giống với
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    32 ngoại trừ việc nó nhóm các phần tử của mảng thành một
    const fruits = [];
    fruits.push("banana", "apple", "peach");
    console.log(fruits.length); // 3
    
    25 có thể sử dụng một giá trị tùy ý (đối tượng hoặc nguyên thủy) làm khóa

    Sau đây tạo một bàn cờ dưới dạng một chuỗi hai chiều. Bước đầu tiên được thực hiện bằng cách sao chép

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    34 trong
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    35 sang
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    36. Vị trí cũ tại
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    37 được để trống

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    4

    Đây là đầu ra

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    5

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    6

    Kết quả trong

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    7

    Kết quả của sự trùng khớp giữa

    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    38 và một chuỗi có thể tạo ra một mảng JavaScript có các thuộc tính và phần tử cung cấp thông tin về sự trùng khớp. Một mảng như vậy được trả về bởi
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    39 và
    fruits[5] = "mango";
    console.log(fruits[5]); // 'mango'
    console.log(Object.keys(fruits)); // ['0', '1', '2', '5']
    console.log(fruits.length); // 6
    
    40