javascript - typescript 如何比较两个对象?

标签 javascript typescript

我有一个名为 tax 的类(class).

    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;
        }
    }

当我创建该类的 2 个不同对象时

    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 时,它应该给出 true。 我必须在类里面做哪些改变才能得到 a1 === a2 ? 在税务类别中我必须做什么?或者我必须在税级中覆盖哪种方法?

最佳答案

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

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

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

如果您想检查两种税的值是否完全相同,可以一一检查。

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

有关比较对象的更多信息可以找到here

关于javascript - typescript 如何比较两个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43634154/

相关文章:

PHP 和 jQuery 绘制数字动画

javascript - Qualtrics:使用 javascript 转换管道变量并将其显示在文本中?

javascript - 使用 geojson-vt 在 OpenLayers 中加载矢量切片时出现问题

angular - APP_INITIALIZER 和依赖 token 解析问题

javascript - 我能确定 array.slice() 总是和 array.slice(0) 一样工作吗?

javascript - 为什么在iife中使用赋值运算符时 'this'指向 'window' obj?

javascript - 获取渲染元素的组件

javascript - 在 ListView 中显示 Array 的每个项目

javascript - 在 html 页面中显示来自 Angularjs2 文件 (.ts) 的数据

javascript - 如何进行表单验证?