关于javascript:如何比较两个对象的打字稿?

how typescript comparing two objects?

本问题已经有最佳答案,请猛点这里访问。

我有一门课叫tax

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    export class tax {
        private _id: string;
        private _name: string;
        private _percentage: number;`

        constructor(id: string ="", taxName: string ="", percentage: number = 0) {
            this._id = id;
            this._name = taxName;
            this._percentage = percentage;
        }


        public get id(): string {
            return this._id;
        }

        public set id(v: string) {
            this._id = v;
        }
        public get name(): string {
            return this._name;
        }

        public set name(v: string) {
            this._name = v;
        }
        public get percentage(): number {
            return this._percentage;
        }

        public set percentage(v: number) {
            this._percentage = v;
        }

        toString(){
            return this.id;
        }
    }

当我创建这个类的两个不同对象时

1
2
3
4
5
    a1: tax = new tax("id","name",4);
    a2: tax = new tax("id","name",4);

    console.log(a1 === a2); //false
    console.log(a1 == a2); //false

当我给a1==a2时,它应该是真的。我必须在课堂上做些什么改变,这样会给A1==A2?我在税务课上要做什么?或者我必须在税类中重写哪个方法?


您正在比较同一类的两个不同实例。尽管实例中的值相同,但它们是两个完全独立的实体。

例如,如果我们有一个具有单个属性namePeople类。即使世界上有两个叫John Smith的人,他们也是两个完全独立的人。

每个实例都有自己的唯一标识符。

如果您想检查两种税是否具有完全相同的值,可以逐个检查它们。

1
console.log(a1.getId() === a2.getId() && a1.getName() === a2.getName() && a1.getPercentage() === a2.getPercentage()) // true

有关比较对象的详细信息,请参见此处