[JQUERY] JSON 개체에 jQuery의 발견 ()를 사용
JQUERYJSON 개체에 jQuery의 발견 ()를 사용
해결법
-
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.순수 자바 스크립트 솔루션은 더 나은이지만, 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.[: { "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.한 차원 JSON 위해 당신은이를 사용할 수 있습니다 :
한 차원 JSON 위해 당신은이를 사용할 수 있습니다 :
function exist (json, modulid) { var ret = 0; $(json).each(function(index, data){ if(data.modulId == modulid) ret++; }) return ret > 0; }
-
5.당신은 JSONPath을 사용할 수 있습니다
당신은 JSONPath을 사용할 수 있습니다
이 같은 일을 :
results = JSONPath(null, TestObj, "$..[?(@.id=='A')]")
JSONPath 결과의 배열을 반환합니다
(나는 표현 "$가 .. [? (@가. ID가 == 'A')가]"BTW. 어쩌면 그것은 미세 조정 브라우저 콘솔의 도움으로 할 필요가 테스트하지 않았습니다)
-
6.내가 언급하고 싶었 또 다른 옵션, 당신은 XML로 데이터를 변환 한 후 jQuery.find을 사용할 수 있습니다 ( "ID = 'A'") 당신이 원하는 방법.
내가 언급하고 싶었 또 다른 옵션, 당신은 XML로 데이터를 변환 한 후 jQuery.find을 사용할 수 있습니다 ( "ID = 'A'") 당신이 원하는 방법.
의 jQuery 플러그인 json2xml처럼 그 효과가 있습니다.
아마 오버 헤드 전환 가치가 있지만,이 유용 할 수 있도록 즉, 정적 데이터에 대한 하나의 시간 비용 아니에요.
from https://stackoverflow.com/questions/4992383/use-jquerys-find-on-json-object by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 동적으로 생성 된 요소에 날짜 선택기 ()를 넣어 - JQuery와 / JQueryUI (0) | 2020.10.12 |
---|---|
[JQUERY] 자바 스크립트에서 시간 지연을 설정하는 방법 (0) | 2020.10.12 |
[JQUERY] asp.net MVC에 jQuery를 아약스 업로드 파일 (0) | 2020.10.12 |
[JQUERY] JQuery와 AJAX의 GET 호출에서 요청 헤더 전달 (0) | 2020.10.12 |
[JQUERY] HTML 양식 데이터를 사용하여 JSON 개체를 보내는 방법 (0) | 2020.10.12 |