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

标签 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 中存在的任何 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/

相关文章:

javascript - 如何使用 r.js 优化 ember-data

javascript - 为什么使用 strict 时匿名函数中的 "this"未定义?

javascript - 使用 javascript 捕获键盘敲击并在 setTimeout 后重放所有键盘敲击

java - Spring 启动配置 : how to return always same random value when referenced?

c# - 在 UML 类图中表示 C# 访问器属性?

javascript函数实例有错误的var

javascript - 如何将图像文件 url 上传到 indexedDB 以在页面上呈现

javascript - 如何做最合适的垂直对齐

c# - 为什么我的自动实现的属性在 ASP.NET 2.0 中有效?

WPF:使用模型 View View 模型刷新具有绑定(bind)属性的控件