Bạn sẽ xóa thuộc tính của đối tượng trong JavaScript như thế nào?

Trong JavaScript, toán tử xóa được sử dụng để xóa một thuộc tính của một đối tượng. Sau khi xóa thuộc tính thực tế, thuộc tính đó sẽ không thể truy cập được và trả về undefined

Lời gọi của toán tử delete trả về true khi nó loại bỏ một thuộc tính và false ngược lại. nó chỉ có tác dụng với thuộc tính của đối tượng, nó không có tác dụng với tên biến hay hàm

Toán tử xóa không nên được sử dụng trên các thuộc tính đối tượng JavaScript được xác định trước như các đối tượng window, MathDate. Nó có thể làm hỏng ứng dụng của bạn

Hãy xem xét kỹ lưỡng một số sự thật về toán tử delete

Xóa thuộc tính đối tượng

Cách duy nhất để loại bỏ hoàn toàn các thuộc tính của một đối tượng trong JavaScript là sử dụng toán tử delete

Nếu thuộc tính mà bạn đang cố xóa không tồn tại, thao tác xóa sẽ không có bất kỳ tác dụng nào và có thể trả về true

Chúng ta có thể xóa các biến trong Javascript không?

Toán tử xóa xóa thuộc tính khỏi đối tượng. Nó không thể xóa một biến. Không thể xóa bất kỳ thuộc tính nào được khai báo với ____17_______ khỏi phạm vi toàn cầu hoặc khỏi phạm vi của hàm

Nếu bạn khai báo một biến mà không có var, nó có thể bị xóa. Hãy xem ví dụ dưới đây

Biến được khai báo không có từ khóa delete0 lưu trữ bên trong nó như một thuộc tính của đối tượng delete1. Vì vậy, chúng ta có thể xóa các thuộc tính của đối tượng delete1

Chúng ta có thể xóa các giá trị khỏi một mảng không?

Vì các mảng JavaScript là các đối tượng, các phần tử có thể bị xóa bằng cách sử dụng delete

delete sẽ xóa thuộc tính đối tượng, nhưng sẽ không lập chỉ mục lại mảng hoặc cập nhật độ dài của nó. Điều này làm cho nó xuất hiện như thể nó là undefined

Sử dụng delete có thể để lại các lỗ không xác định trong mảng. Thay vào đó, hãy sử dụng delete7, delete8 hoặc delete9

Chúng ta có thể xóa các đối tượng tích hợp không?

Việc xóa các đối tượng tích hợp sẵn như các đối tượng Math, Datewindow là không an toàn và chúng có thể làm hỏng toàn bộ ứng dụng của bạn

Xóa các thuộc tính không thể cấu hình

Thuộc tính đối tượng, bên cạnh một true3, có ba thuộc tính đặc biệt

  • true4 – nếu true, giá trị có thể được thay đổi, nếu không, nó chỉ đọc
  • true6 – nếu true, nó được liệt kê trong các vòng lặp, nếu không thì không được liệt kê
  • true8 – nếu true9, thuộc tính có thể bị xóa hoặc thuộc tính có thể được sửa đổi, nếu không thì không thể thay đổi

Không thể xóa các giá trị được gán bằng cách sử dụng false0 và đặt thành false1 trong một đối tượng

Ở chế độ nghiêm ngặt, nó sẽ báo lỗi nếu bạn cố xóa thuộc tính không thể định cấu hình

Phần kết luận

delete là cách thực sự duy nhất để loại bỏ các thuộc tính của đối tượng mà không có bất kỳ phần còn lại nào, nhưng nó hoạt động chậm hơn ~100 lần nếu bạn đang sử dụng delete trong các vòng lặp

Giải pháp thay thế là đặt giá trị thành ufalse4được xác định như false5. Nó không xóa hoàn toàn thuộc tính, nó chỉ đặt giá trị thành không xác định. sự lựa chọn không chính xác là một giải pháp nổi bật, nhưng nếu bạn sử dụng nó một cách cẩn thận thì bạn sẽ có thể cải thiện hiệu suất

Bạn có một đối tượng với một số thuộc tính và bạn muốn loại bỏ một số thuộc tính này trước khi sử dụng thêm đối tượng

    let person = {
        firstName: "John",
        lastName: "Doe",
        gender: "Male",
        age: 34
    };

    const json = JSON.stringify(person);
    console.log(json);
    // => {"firstName":"John","lastName":"Doe","gender":"Male","age":34}
    // What can we do if we don't want the `age` property in the JSON string? -->

Ở đây, chuỗi JSON cũng chứa thuộc tính age. Tuy nhiên, bạn sẽ gửi chuỗi qua mạng và máy chủ ở đầu bên kia sẽ không sử dụng thuộc tính age. Vì vậy, bạn muốn xóa thuộc tính age khỏi đối tượng person trước khi chuyển đổi nó thành chuỗi JSON

Giải pháp

Bạn có thể sử dụng toán tử delete, đơn giản hơn hoặc hủy đối tượng, có thể xóa nhiều thuộc tính cùng một lúc

Sử dụng toán tử delete

Sử dụng toán tử delete để xóa thuộc tính khỏi đối tượng

    let person = {
        firstName: "John",
        lastName: "Doe",
        gender: "Male",
        age: 34
    };

    // Delete the age property first
    delete person.age;
    let json = JSON.stringify(person);
    console.log(json);

Toán tử delete sẽ trả về nếu nó thành công và luôn trả về

    let person = {
        firstName: "John",
        lastName: "Doe",
        gender: "Male",
        age: 34
    };

    // Delete the age property first
    delete person.age;
    let json = JSON.stringify(person);
    console.log(json);
1 - ngay cả khi thuộc tính không tồn tại. Cuộc gọi sẽ chỉ trả về
    let person = {
        firstName: "John",
        lastName: "Doe",
        gender: "Male",
        age: 34
    };

    // Delete the age property first
    delete person.age;
    let json = JSON.stringify(person);
    console.log(json);
2 khi một thuộc tính không thể định cấu hình - đó là trường hợp đối với các thuộc tính trên các đối tượng tích hợp như
    let person = {
        firstName: "John",
        lastName: "Doe",
        gender: "Male",
        age: 34
    };

    // Delete the age property first
    delete person.age;
    let json = JSON.stringify(person);
    console.log(json);
3 của một
    let person = {
        firstName: "John",
        lastName: "Doe",
        gender: "Male",
        age: 34
    };

    // Delete the age property first
    delete person.age;
    let json = JSON.stringify(person);
    console.log(json);
4

Sử dụng phá hủy đối tượng

Toán tử delete chỉ có thể xóa một thuộc tính cho mỗi cuộc gọi. Vì vậy, nếu bạn muốn xóa các thuộc tính age

    let person = {
        firstName: "John",
        lastName: "Doe",
        gender: "Male",
        age: 34
    };

    // Delete the age property first
    delete person.age;
    let json = JSON.stringify(person);
    console.log(json);
7, thì bạn phải thực hiện hai cuộc gọi delete. Thay vào đó, bạn có thể sử dụng tính năng hủy đối tượng để xóa nhiều thuộc tính bằng một lệnh gọi

    const person = {
        firstName: "John",
        lastName: "Doe",
        gender: "Male",
        age: 34
    };

    // Destructure the age and gender
    const {age, gender, ...personTrimmed} = person;
    const json = JSON.stringify(personTrimmed);
    console.log(json);

Lưu ý rằng quá trình hủy chậm hơn đáng kể so với toán tử delete bởi vì nó tạo ra một đối tượng mới sao chép từ đối tượng ban đầu. Hủy cấu trúc cũng không được hỗ trợ bởi bất kỳ phiên bản IE nào

Làm cách nào để xóa đối tượng trong JavaScript?

Cách duy nhất để xóa hoàn toàn các thuộc tính của một đối tượng trong JavaScript là sử dụng toán tử xóa . Nếu thuộc tính mà bạn đang cố xóa không tồn tại, thao tác xóa sẽ không có bất kỳ tác dụng nào và có thể trả về true.

Bạn sẽ xóa thuộc tính của đối tượng student như thế nào?

Bạn có thể sử dụng toán tử xóa với. hoặc [ ] để xóa thuộc tính khỏi đối tượng.

Làm cách nào để xóa thuộc tính khỏi đối tượng trong mảng JavaScript?

cú pháp rest và phương thức reduce(), để loại bỏ một thuộc tính khỏi một đối tượng mà không làm biến đổi nó