我可以动态设置属性的值吗?

时间:2014-06-19 06:07:18

标签: javascript properties

我有以下内容:

    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 }
    }

有没有一种方法可以在没有if检查的情况下完成这项工作。我想要的是有一个适用于data.roles中存在的任何角色的解决方案。

1 个答案:

答案 0 :(得分:1)

由于 split 返回一个数组,您可以使用 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

没有 forEach 的浏览器有polyfill at MDN