我有以下内容:
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 中存在的任何 Angular 色的解决方案。
最佳答案
由于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
有一个polyfill at MDN对于没有 forEach 的浏览器。
关于javascript - 我可以动态设置属性的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24299789/