2012-07-11 2 views
2

문자열 선택기를 사용하여 객체 속성을 설정하고 싶습니다. 문자열이 model.name이고 값을 저장하는 객체가 있습니다. object[model.name]에 값을 저장하는 대신 object[model][name]에 저장하고 싶습니다.문자열 선택기를 사용하여 javascript 속성 설정

어떻게 javascript/jQuery 또는 javascript/jQuery 플러그인을 사용할 수 있습니까?

+0

왜 downvote? 좋아, 간단한 질문이다. 그러나 누군가는 과거에 멍청한 놈이었습니다. 안 그래요? – devundef

+0

나는 데이터를 설정하는 일반적인 방법의 대부분을 시도했다. PHP에서 알기에, 보통 자바 스크립트에서는 작동하지 않는다. 보통 ORM 시스템을 만드는 백엔드 프로그래밍을 사용한다 ... –

답변

3
function setObjectPathValue(source, path, value) { 
    var parts = path.split('.'), len = parts.length, target = source; 

    for (var i = 0, part; i < len - 1; i++) { 
     part = parts[i]; 
     target = target[part] == undefined ? (target[part] = {}) : target[part]; 
    } 
    target[parts[len - 1]] = value; 
    return target; 
} 

var obj = {}; 
setObjectPathValue(obj, "level1.level2.level3.name", "test"); 
alert(obj.level1.level2.level3.name); 
+0

고마워요. :-) –

관련 문제