2016-06-22 6 views
0

속성이 중첩되어 있어야하는 서버에 JSON 객체를 보내야합니다. 예를 들어, 데이터 객체는 2 레벨 깊이로 중첩 될 수 있습니다. 그러나, 하나는 단순히 직접 객체를 선언 할 수 없습니다 : 나는 현재 수동으로 중첩 된 개체 레이어를 만들어이 문제를 우회하려고 시도하고자바 스크립트에서 중첩 된 객체 속성 정의

var foo = {}; 
foo.bar.bartwo = "data"; //Uncaught TypeError 

.

var foo = {}; 
foo.bar = {}; 
foo.bar.bartwo = "data"; //Successful 

그러나 개체에 여러 수준의 중첩이 필요한 경우이 문제는 빨리 해결할 수 없습니다.

Javascript 또는 Jquery에서이 문제를 처리하는 더 좋은 방법이 있습니까 (두 번째 코드 예제를 간단히 골프를 치는 것만으로는 효과가 없습니다)?

설명 : 해결책은 중첩 된 속성에 직접 액세스 할 수 있어야합니다. 없이 모든 중간 속성도 만들어야합니다.

+4

'var foo = {bar : {bartwo : "데이터"}}; ' – naththedeveloper

+0

은 "네임 스페이스"기능을 간단하게 만듭니다. 또는 google – dfsq

+0

@naththedeveloper 귀하의 솔루션이보다 간결하지만 실제로 근본 문제를 해결하지는 못합니다. 네 스팅은 동적으로 생성되는 여러 레벨을 필요로 할 수 있으며 이는 사용자의 예제에서 작동하지 않습니다. –

답변

0

중첩 된 객체를 정의하지 않아도됩니다. 즉, foo.bar = {}; 당신이 사용하거나 그렇지 않으면

0

을하는 작은 방법을 만들 정의되지 즉 foo.bar 당신 '정의되지 않은'오류를 줄 것이다 그것을 를 사용하는 첫 번째 정의해야합니다 자바 스크립트 객체 그것을 에 값을 할당 할 수 없습니다
function nested(x, y){ 
nestedA=""; 
parts = x.split('.'); 
    for(i=0; i<parts.length; i++) { 
    nestedA += parts[i]; 
    eval(nestedA + ' = {}'); 
    nestedA += '.'; 
} 
eval(nestedA.slice(0,-1)+ '= "'+y+'"'); 
} 
nested('foo.bar.bartwo', "data"); 
+0

코드를 테스트하십시오. 거기에 몇 가지 구문 문제가 있습니다. – 4castle

+0

고쳐 주셔서 감사합니다 –

+0

'. ='무엇을하고 있습니까? 그것은 연결인가? – 4castle

관련 문제