반응형
각도에서의 객체 비교
Angular에서 두 물체를 "깊이" 비교할 수 있습니까?각 키/값 쌍을 비교합니다.예를 들어 다음과 같습니다.
오브젝트 1
{
key1: "value1",
key2: "value2",
key3: "value3"
}
오브젝트 2
{
key1: "value1",
key2: "newvalue",
key3: "value3"
}
필요한 것은 키/값 쌍 중 하나만 다르기 때문에 비교에 실패하는 것입니다.즉, 모든 키/값 쌍이 정확히 일치해야 합니다.그렇지 않으면 오류가 발생합니다.이미 앵귤러에 내장되어 있는 건가요?필요하다면 직접 서비스도 만들 수 있겠지만, 이미 내장되어 있기를 바랐습니다.angular.equals와 비슷합니다.
두 개체를 비교하려면 다음을 사용할 수 있습니다.
angular.equals(obj1, obj2)
자세한 비교가 이루어지며 키의 순서에 의존하지 않습니다. "AngularJS DOCS 및 약간의 데모"를 참조하십시오.
var obj1 = {
key1: "value1",
key2: "value2",
key3: {a: "aa", b: "bb"}
}
var obj2 = {
key2: "value2",
key1: "value1",
key3: {a: "aa", b: "bb"}
}
angular.equals(obj1, obj2) //<--- would return true
두 객체에서 순서가 동일하다고 가정하면stringify둘 다 비교!
JSON.stringify(obj1) == JSON.stringify(obj2);
이 스레드에서는 조금 늦었지만, angular.equals는 딥 체크를 합니다만, 멤버 중 하나가 접두사에 "$"를 포함하면 왜 다르게 동작하는지 아는 사람이 있습니까?
이 데모는 다음 입력으로 시도하실 수 있습니다.
var obj3 = {}
obj3.a= "b";
obj3.b={};
obj3.b.$c =true;
var obj4 = {}
obj4.a= "b";
obj4.b={};
obj4.b.$c =true;
angular.equals(obj3,obj4);
답장이 좀 늦은 건 알지만 30분 정도 디버깅을 하다가 시간을 절약할 수 있을 것 같아요.
주의해 주세요.angular.equals()속성을 가진 물체에 대해obj.$something (예: 이름은 $로 시작합니다)이러한 속성은 비교에서 무시됩니다.
예:
var obj1 = {
$key0: "A",
key1: "value1",
key2: "value2",
key3: {a: "aa", b: "bb"}
}
var obj2 = {
$key0: "B"
key2: "value2",
key1: "value1",
key3: {a: "aa", b: "bb"}
}
angular.equals(obj1, obj2) //<--- would return TRUE (despite it's not true)
언급URL : https://stackoverflow.com/questions/20409712/compare-objects-in-angular
반응형
'programing' 카테고리의 다른 글
| 영사기에서 입력에 텍스트를 가져오는 방법 (0) | 2023.03.07 |
|---|---|
| C#을 통해 Oracle Database에 연결하시겠습니까? (0) | 2023.03.02 |
| 기존 Angular1 웹 앱을 Cordova 앱으로 변환하는 방법 (0) | 2023.03.02 |
| JSON 및 보고되지 않은 필드 처리 (0) | 2023.03.02 |
| 반응:예기치 않은 토큰 '<' 오류 (0) | 2023.03.02 |