Đối tượng vs biến python

Đố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

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à , 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 đượ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 trả về bởi một hàm kiểm tra

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 pháp

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 mục đầ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 phần tử mới vào mảng
const fruits = [];
fruits.push["banana", "apple", "peach"];
console.log[fruits.length]; // 3
59 — làm cho nó trở thành phần tử đầ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 pháp

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ử

Đoạn mã dưới đây sử dụng một 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

Chủ Đề