为什么两个相等的对象在Angular 2中显示"不相等"

Ser*_*hiy 6 angular

我从json文件上传数组.每1.5秒我检查文件是否有任何变化(目前我在一个文件上测试没有任何变化),但当我检查是否

    if ( this.itemsParentArray[i] !== this.itemInArray[i] )
Run Code Online (Sandbox Code Playgroud)

它始终显示它不相等,并且console.log(""不等于")

我错过了代码中的内容吗?这里是:

export class HomeComponent {
itemsParentArray = [];
itemInArray = [];
myRes: Content;
showAssigned:boolean = false;

constructor(private structureRequest: StructureRequestService) {
    setInterval(() => {
        this.timerGetStructure();
    }, 1500);
}
//  using with setInterval to get new data and sets into content Array with this.updateItems(result) if it's new

timerGetStructure() {
    this.structureRequest.sendRequest().subscribe((result) => this.updateItems(result));
}
updateItems(result) {
    this.myRes =  result;
    this.itemInArray = this.myRes.content;
    for ( let i = 0; i < this.itemInArray.length; i++) {
                if ( this.itemsParentArray[i] !== this.itemInArray[i] ) {
                   // this.itemsParentArray[i] = this.itemInArray[i];
                   console.log("not equal");
                }
            }
}

//
ngOnInit() {
    //makes http request and puts result into parentArray after 3 sec.
    this.structureRequest.sendRequest().subscribe((result) => this.viewNodes(result));
}
//view items
viewNodes(result) {
    setTimeout(() => {
        this.myRes =  result;
        this.itemsParentArray = this.myRes.content;
        this.showAssigned = true;
    }, 3000);
}
}
Run Code Online (Sandbox Code Playgroud)

如您所见,它从同一个文件加载数据(我不更改文件数据!!!):

this.itemsParentArray = this.myRes.content;
Run Code Online (Sandbox Code Playgroud)

和(每1.5秒):

this.itemInArray = this.myRes.content;
Run Code Online (Sandbox Code Playgroud)

Gün*_*uer 8

==特别是===不要检查对象是否包含具有相同值的相同属性.它只是检查它是否是相同的对象引用.

{} == {} 
Run Code Online (Sandbox Code Playgroud)

要么

{} === {}
Run Code Online (Sandbox Code Playgroud)

也导致了false.

另请参见Typescript:避免通过引用进行比较以及如何使用JSON对象初始化typescript 对象

Plunker的例子