복붙노트

[JQUERY] JSON 개체에 jQuery의 발견 ()를 사용

JQUERY

JSON 개체에 jQuery의 발견 ()를 사용

해결법


  1. 1.jQuery를 일반 객체 리터럴에서 작동하지 않습니다. 당신은 모든 'ID (또는 다른 속성) 검색과 유사한 방식으로 기능 아래를 사용할 수에 관계없이 객체의 깊이 :

    jQuery를 일반 객체 리터럴에서 작동하지 않습니다. 당신은 모든 'ID (또는 다른 속성) 검색과 유사한 방식으로 기능 아래를 사용할 수에 관계없이 객체의 깊이 :

    function getObjects(obj, key, val) {
        var objects = [];
        for (var i in obj) {
            if (!obj.hasOwnProperty(i)) continue;
            if (typeof obj[i] == 'object') {
                objects = objects.concat(getObjects(obj[i], key, val));
            } else if (i == key && obj[key] == val) {
                objects.push(obj);
            }
        }
        return objects;
    }
    

    사용 같은 :

    getObjects(TestObj, 'id', 'A'); // Returns an array of matching objects
    

  2. 2.순수 자바 스크립트 솔루션은 더 나은이지만, jQuery를 방법은 jQuery를 그렙를 사용하는 및 / 또는 방법을지도한다. 아마 훨씬 더 $ .each를 사용하는 것보다

    순수 자바 스크립트 솔루션은 더 나은이지만, jQuery를 방법은 jQuery를 그렙를 사용하는 및 / 또는 방법을지도한다. 아마 훨씬 더 $ .each를 사용하는 것보다

    jQuery.grep(TestObj, function(obj) {
        return obj.id === "A";
    });
    

    또는

    jQuery.map(TestObj, function(obj) {
        if(obj.id === "A")
             return obj; // or return obj.name, whatever.
    });
    

    반환 정합 배열하거나지도하는 경우의 모습 업 값의 대상. 당신이 그를 사용하여 간단하게 원하는 것을 할 수 있습니다.

    그러나이 예에서는 데이터가 평면 배열이 아니기 때문에, 약간의 재귀를해야 할 것입니다, 우리는 순수 자바 스크립트 솔루션이 할 것처럼, 임의의 구조, 키, 값을 받아들이는 것입니다.

    function getObjects(obj, key, val) {
        var retv = [];
    
        if(jQuery.isPlainObject(obj))
        {
            if(obj[key] === val) // may want to add obj.hasOwnProperty(key) here.
                retv.push(obj);
    
            var objects = jQuery.grep(obj, function(elem) {
                return (jQuery.isArray(elem) || jQuery.isPlainObject(elem));
            });
    
            retv.concat(jQuery.map(objects, function(elem){
                return getObjects(elem, key, val);
            }));
        }
    
        return retv;
    }
    

    Box9의 대답하지만, 유용 어디 jQuery를 유틸리티 기능을 사용하는 것과 본질적으로 동일.

    ········


  3. 3.[: { "ID": "데이터"} { "데이터", "ID"}]에 나를 위해이 작품

    [: { "ID": "데이터"} { "데이터", "ID"}]에 나를 위해이 작품

    function getObjects(obj, key, val) 
    {
        var newObj = false; 
        $.each(obj, function()
        {
            var testObject = this; 
            $.each(testObject, function(k,v)
            {
                //alert(k);
                if(val == v && k == key)
                {
                    newObj = testObject;
                }
            });
        });
    
        return newObj;
    }
    

  4. 4.한 차원 JSON 위해 당신은이를 사용할 수 있습니다 :

    한 차원 JSON 위해 당신은이를 사용할 수 있습니다 :

    function exist (json, modulid) {
        var ret = 0;
        $(json).each(function(index, data){
            if(data.modulId == modulid)
                ret++;
        })
        return ret > 0;
    }
    

  5. 5.당신은 JSONPath을 사용할 수 있습니다

    당신은 JSONPath을 사용할 수 있습니다

    이 같은 일을 :

    results = JSONPath(null, TestObj, "$..[?(@.id=='A')]")
    

    JSONPath 결과의 배열을 반환합니다

    (나는 표현 "$가 .. [? (@가. ID가 == 'A')가]"BTW. 어쩌면 그것은 미세 조정 브라우저 콘솔의 도움으로 할 필요가 테스트하지 않았습니다)


  6. 6.내가 언급하고 싶었 또 다른 옵션, 당신은 XML로 데이터를 변환 한 후 jQuery.find을 사용할 수 있습니다 ( "ID = 'A'") 당신이 원하는 방법.

    내가 언급하고 싶었 또 다른 옵션, 당신은 XML로 데이터를 변환 한 후 jQuery.find을 사용할 수 있습니다 ( "ID = 'A'") 당신이 원하는 방법.

    의 jQuery 플러그인 json2xml처럼 그 효과가 있습니다.

    아마 오버 헤드 전환 가치가 있지만,이 유용 할 수 있도록 즉, 정적 데이터에 대한 하나의 시간 비용 아니에요.

  7. from https://stackoverflow.com/questions/4992383/use-jquerys-find-on-json-object by cc-by-sa and MIT license