2012-06-22 1 views
-1

JSON 객체를 매개 변수로 받아들이는 함수를 만들고 있습니다. 전달 된 객체의 각 속성은 배열입니다. 각 배열의 길이를 결정해야합니다.배열 값을 동적으로 읽는 것은 JSON 객체를 구성합니다.

내가 미리 알지 못하는 것은 속성의 이름 또는 속성의 수입니다.

각 배열의 길이는 어떻게 결정합니까? 다시 말하지만, 미리 속성 이름/키를 명시 할 수는 없기 때문에 명시 적으로 속성/키를 참조 할 수는 없습니다. 알 수없는 각 속성을 배열로 어떻게 참조합니까?

는 은 JS 개체에 JSON 데이터를 변환 할

+0

가능한 복제본 [JavaScript/jQuery에서 객체의 속성을 얻는 방법?] (http://stackoverflow.com/questions/4079274/how-to-get-an-objects-properties-in-javascript-jquery) –

+0

'length' 속성으로부터 배열의 길이를 얻을 수 있습니다. –

답변

0

당신은 각 속성에 액세스 할 for...in 루프를 사용하여 객체를 반복 할 수 있습니다. 위의 예에서

for (var key in myObject) { 
    // Check to make sure the property is not part of the `Object` prototype (eg. toString) 
    if (myObject.hasOwnProperty(key)) { 
    console.log(key, myObject[key].length); 
    } 
} 

, 우리는 객체 myObject의 속성을 반복 우리는 (그들이 모두 배열 인 가정 함)들이 길이 값을 기록.

"JSON 객체"로 JSON 문자열을 의미하는 경우 myObject = JSON.parse(myObject) (최신 브라우저에서 작동) 또는 myObject = eval("(" + myOjbect + ")") (안전하지 않은 것으로 간주 됨)을 사용하여 myObject를 실제 객체로 파싱 할 수 있습니다 브라우저). 구문 분석 후에 위의 기술을 사용하여 배열 길이를 미세하게 지정할 수 있습니다.

참고 : 개체가 JSON임을 지정하기 위해 게시물을 업데이트 했으므로 hasOwnProperty 수표가 필요하지 않을 수 있지만이 테스트를 항상 사용하는 것이 안전합니다.

+0

동작 Jake : 감사합니다. 이것이 내가 사용하고있는 접근법이지만, 지금 내가 빠진 것을 보게됩니다. 변수 이름을 사용하여 설명 할 것입니다. myObject [key] 대신 myObject를 사용하여 for ... in 루프에서 배열을 참조하려고했습니다. 따라서 myObject.length는 단순히 키의 이름을 포함하는 String의 길이를 반환했습니다. 고맙습니다! – RLS

+0

아 ... 네, ES6에서 새로운 for for ... of 루프의 기능을 사용하고있었습니다 :) https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...of 불행히도 아직 사용하지 않으려면 잠시 기다려야합니다. –

+0

수정 ": myObject [key] 대신 key를 사용하여 for ... in 루프에서 배열을 참조하려고 했으므로 key.length는 단순히 키 이름이 들어있는 String의 길이를 반환했습니다. – RLS

0

사용 JSON.parse을 -RS, 사전에 감사합니다, 그리고 당신은 배열의 길이 등의 속성을 사용할 수 있습니다.

var myObject = JSON.parse(myJSONtext, reviver); 

JSON 참조 : http://www.json.org/js.html

+0

고마워요,하지만 저는 파싱하는 법을 묻지 않았습니다. – RLS

관련 문제