복붙노트

[JQUERY] jQuery를 객체 평등

JQUERY

jQuery를 객체 평등

해결법


  1. 1.jQuery를 1.6 때문에, 당신은 .is는 사용할 수 있습니다. 다음은 일 년 이상 이전의 대답은 ...

    jQuery를 1.6 때문에, 당신은 .is는 사용할 수 있습니다. 다음은 일 년 이상 이전의 대답은 ...

    var a = $('#foo');
    var b = a;
    
    
    if (a.is(b)) {
        // the same object!
    }
    

    당신은 두 개의 변수가 실제로 같은 객체, 예를 들어 있는지 확인하려면 :

    var a = $('#foo');
    var b = a;
    

    ... 당신은 자신의 고유 ID를 확인할 수 있습니다. 때마다 당신은이 ID를 가져옵니다 새로운 jQuery를 개체를 만듭니다.

    if ($.data(a) == $.data(b)) {
        // the same object!
    }
    

    비록이 같은이 단순한 === B로 얻을 수있는, 적어도 위의 힘은의 다음 개발자 정확히 무엇을 당신에게있는 거 테스트를 보여줍니다.

    어떤 경우에는, 그 후 당신없는 것을 아마. 당신이 두 개의 서로 다른 jQuery를 개체 요소의 동일한 세트가 포함되어 있는지 확인하고 싶었다 경우, 당신은이를 사용할 수 있습니다 :

    $.fn.equals = function(compareTo) {
      if (!compareTo || this.length != compareTo.length) {
        return false;
      }
      for (var i = 0; i < this.length; ++i) {
        if (this[i] !== compareTo[i]) {
          return false;
        }
      }
      return true;
    };
    

    출처

    var a = $('p');
    var b = $('p');
    if (a.equals(b)) {
        // same set
    }
    

  2. 2.당신은 여전히 ​​알 수없는 경우, 원래 객체에 의해 다시 얻을 수 있습니다 :

    당신은 여전히 ​​알 수없는 경우, 원래 객체에 의해 다시 얻을 수 있습니다 :

    alert($("#deviceTypeRoot")[0] == $("#deviceTypeRoot")[0]); //True
    alert($("#deviceTypeRoot")[0] === $("#deviceTypeRoot")[0]);//True
    

    $ ( "#의 deviceTypeRoot")은 또한 선택은 선택한 객체의 배열을 반환하기 때문에.


  3. 3.은 $ .fn.equals는 (...) 솔루션은 아마도 가장 깨끗하고 가장 우아한 하나입니다.

    은 $ .fn.equals는 (...) 솔루션은 아마도 가장 깨끗하고 가장 우아한 하나입니다.

    나는 이런 식으로 뭔가를 신속하고 더러운 시도했다 :

    JSON.stringify(a) == JSON.stringify(b)
    

    아마 비싸지 만 편안한 것은 우아한 해결책이 아닌하면서, 암시 적으로 재귀 것입니다.

    그냥 내 2 센트.


  4. 4.그것은 일반적으로 그 다음 비교 기능적으로 동일로 $ (foo는)와 $ (foo는) 비교, 나쁜 생각을 말할 수있다 :

    그것은 일반적으로 그 다음 비교 기능적으로 동일로 $ (foo는)와 $ (foo는) 비교, 나쁜 생각을 말할 수있다 :

    <html>
    <head>
    <script language='javascript'>
        function foo(bar) {
            return ({ "object": bar });
        }
    
        $ = foo;
    
        if ( $("a") == $("a") ) {
            alert ("JS engine screw-up");
        }
        else {
            alert ("Expected result");
        }
    
    </script>
    
    </head>
    </html>
    

    물론 당신은 "JS 엔진 나사 업"을 기대하지 않을 것입니다. 난 그냥 jQuery를이 무엇을하고 있는지 명확하게하기 위해 "$"가 사용합니다.

    새 객체를 반환 ( "# foo는") 당신이 실제로 jQuery를 ( "# foo는")를하고있는 $를 호출 할 때마다. 를 비교하고 동일한 개체를 기대 그래서 올바르지 않습니다.

    그러나 당신이 할 수 할 수있는 것은 같은입니다 :

    <html>
    <head>
    <script language='javascript'>
        function foo(bar) {
            return ({ "object": bar });
        }
    
        $ = foo;
    
        if ( $("a").object == $("a").object ) {
            alert ("Yep! Now it works");
        }
        else {
            alert ("This should not happen");
        }
    
    </script>
    
    </head>
    </html>
    

    JQuery와 같은 것을, 그래서 당신의 진짜 프로그램의 개체 그래서 정말 당신은 아마 ID 요소를 비교해야

    ... 
    $(someIdSelector).attr("id") == $(someOtherIdSelector).attr("id")
    

    더 적절하다.


  5. 5.사용 Underscore.js ISEQUAL 방법 http://underscorejs.org/#isEqual

    사용 Underscore.js ISEQUAL 방법 http://underscorejs.org/#isEqual


  6. 6.먼저 개체가이 기능을 사용하여 키를 기반으로 주문할

    먼저 개체가이 기능을 사용하여 키를 기반으로 주문할

    function sortObject(o) {
        return Object.keys(o).sort().reduce((r, k) => (r[k] = o[k], r), {});
    }
    

    그런 다음,이 기능을 사용하여 객체의 캐릭터 라인 버전을 비교

    function isEqualObject(a,b){
        return JSON.stringify(sortObject(a)) == JSON.stringify(sortObject(b));
    }
    

    가정 오브젝트 키는 다른 주문과 같은 값으로되어있다

    var obj1 = {"hello":"hi","world":"earth"}
    var obj2 = {"world":"earth","hello":"hi"}
    
    isEqualObject(obj1,obj2);//returns true
    

  7. 7.당신이 내용을 확인하려면 다음 단지 동일하거나 사용하지 않을 수 있습니다 JSON.stringify (OBJ)

    당신이 내용을 확인하려면 다음 단지 동일하거나 사용하지 않을 수 있습니다 JSON.stringify (OBJ)

    하나 - 바 {키 : 좋은} =;

    또는로드 = {키 : 좋은};

    내용이 동일한 경우 JSON.stringify (A) == JSON.stringify (b)는 -----> 당신은 진정한 가져옵니다.

  8. from https://stackoverflow.com/questions/3176962/jquery-object-equality by cc-by-sa and MIT license