모든 최상위 객체의 특성이 동일한지 확인

질문:

다음은 일부 JSON입니다.
{
  "environments":{

    "production":{
      "zmq_config":{
        "host":"*",
        "port":"7676"
      },
      "redis_server_config":{
        "host":"localhost",
        "port":"26379"
      }
    },

    "dev_remote":{
      "zmq_config":{
        "host":"*",
        "port":"5555"
      },
      "redis_server_config":{
        "host":"localhost",
        "port":"16379"
      }
    },

    "dev_local":{
      "zmq_config":{
        "host":"*",
        "port":"5555"
      },
      "redis_server_config":{
        "host":"localhost",
        "port":"6379"
      }
    }
  }
}
모든 속성이 같은 상호보완 속성을 가지고 있는지 확인하기 위해 테스트 세트에 테스트를 만들고 싶습니다.
예를 들어'환경'의 모든 속성에 대해 나는 그것들이 같은 속성을 가지고 있는지 확인하고 싶다.이 예에서는 "zmq config"및 "redis server config"두 가지 속성이 있습니다.지금 나는 최소한 한 단계의 검사를 더 하고 싶다.속성'zmq config'와'redis server config'에 대해 같은 속성'host'와'port'을 순서대로 가지고 있는지 확인하고 싶습니다.
알았어.
도서관이 있는데 이렇게 해도 됩니까?최상위 객체만 볼 수 있는 JavaScript 식별 연산자가 있습니까?
현재 내가 생각할 수 있는 가장 간단한 방법은 모든 동명 속성(동명 속성이 대상 차원 구조의 동일한 위치에 있다고 가정)을 교체하고 간단하게 살펴보는 것이다. 그리고 그것들이 같은 하위 속성을 가지고 있는지 확인하는 것이다.Underscore.js가 최선인가요?밑줄에는 다음과 같은 기능이 있는 것 같습니다.
_.isEqual(obj1, obj2);
내 연구에 의하면 이것이 가장 좋은 후보인 것 같다.
_.isMatch(obj1,obj2);

답안

는 테스트할 각 대상에 대해 대상을 사용할 수 있다.키 함수는 대상을 추출하는 키에 사용되며, 그 키를 비교합니다. 속성이 같은지만 알고 싶을 뿐, 값은 중요하지 않습니다.
그런 다음 각 객체의 키프레임을 추출할 때 를 사용할 수 있습니다.밑줄 대신 lodash에서 제공하는 isEqual 함수(일반적으로 lodash는 더 좋은 성능을 가진다).
가능한 한 자동화하기 위해서, 키를 추출하고 비교할 수 있는 귀속 함수를 만들어야 합니다.