2014-06-19 7 views
0

나는 다음과 같습니다 속성의 값을 동적으로 설정할 수 있습니까?

var data.roles = "Admin:Xxxx:Data"; 

    for (role in data.roles.split(':')) { 
     if (role == 'Admin') { user.data.role.isAdmin = true } 
     if (role == 'Data') { user.data.role.isData = true } 
     if (role == 'Xxxx') { user.data.role.isXxxx = true } 
     if (role == 'Test') { user.data.role.isTest = true } 
    } 

이 내가 만약 검사없이이 작품을 만들 수있는 방법입니다. 내가 원하는 것은 data.roles에있는 모든 역할을 수행 할 수있는 솔루션을 갖추는 것입니다. 대해 forEach없이

var data = {roles: "Admin:Xxxx:Data"}; 
var user = {data: {role:{}}}; 

data.roles.split(':').forEach(function(v) { 
    user.data.role['is' + v] = true; 
}) 

console.log(user.data.role.isXxxx); // true 

브라우저에 대한 polyfill at MDN 있습니다 :

+1

[JavaScript 객체에 동적으로 명명 된 속성을 추가 할 수 있습니까?] (http://stackoverflow.com/questions/1184123/is-it-possible-to-add-dynamically-named-properties-to -javascript-object) (아마도 필터와 함께), user.data.role [ "is"+ role] = true; ' – user2864740

+0

문자열 자체에 대한 색인 생성은 어떻습니까? 'user.data.role [role] = true;' –

답변

1

배열을 반환분할 때문에, 당신은 대해 forEach를 사용할 수 있습니다.

+0

정말 고마워요. 나는 다음 5 분 안에 게시 할 질문을 가지고 있습니다. 비슷한 데이터이지만 역할이 존재하는지 여부에 따라 변수의 값을 설정해야합니다. 당신도 그걸로 도울 수 있기를 바랍니다. –

관련 문제