JavaScript에서 배열의 동일성을 식별하는 것은 어려운 작업일 수 있습니다. 이 시나리오에서는 일반적인 비교 연산자인 ==로는 충분하지 않습니다. 대신, 보다 미묘한 접근 방식이 필요한 객체 비교 영역을 탐구합니다.
배열을 비교하는 간단한 방법은 해당 요소를 반복하고 확인하는 것입니다. 평등. 수행 방법은 다음과 같습니다.
Array.prototype.equals = function (array) { if (!array) return false; if (this === array) return true; if (this.length !== array.length) return false; for (let i = 0, l = this.length; i < l; i++) { if (this[i] instanceof Array && array[i] instanceof Array) { if (!this[i].equals(array[i])) return false; } else if (this[i] !== array[i]) return false; } return true; };
객체는 비교할 때 독특한 과제를 제시합니다. 속성이 동일한 두 객체 인스턴스는 서로 다른 클래스 인스턴스로 인해 결코 동일한 것으로 간주되지 않습니다. 그러나 데이터 비교에만 초점을 맞추는 경우에는 여전히 가능합니다.
Object.prototype.equals = function (object2) { for (const propName in this) { if (this.hasOwnProperty(propName) !== object2.hasOwnProperty(propName)) return false; if (typeof this[propName] !== typeof object2[propName]) return false; } for (const propName in object2) { if (this.hasOwnProperty(propName) !== object2.hasOwnProperty(propName)) return false; if (typeof this[propName] !== typeof object2[propName]) return false; if (!this.hasOwnProperty(propName)) continue; if (this[propName] instanceof Array && object2[propName] instanceof Array) { if (!this[propName].equals(object2[propName])) return false; } else if (this[propName] instanceof Object && object2[propName] instanceof Object) { if (!this[propName].equals(object2[propName])) return false; } else if (this[propName] !== object2[propName]) { return false; } } return true; };
중첩 배열의 경우 Samy Bencherif의 기능은 특정 개체를 검색하고 비교하는 효율적인 방법을 제공합니다. 다차원 배열 내: https://jsfiddle.net/SamyBencherif/8352y6yw/.
위 내용은 JavaScript에서 배열과 객체가 동일한지 어떻게 비교합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!