【问题标题】:JavaScript - How to use variable as key?JavaScript - 如何使用变量作为键?
【发布时间】:2018-01-31 13:21:16
【问题描述】:

我对 JavaScript 非常陌生,并且阅读了一些关于该主题的问题,但没有一个问题能够解决我的问题。

我想更改 Active Directory 中的用户数据,所以我使用 ldapjs。有一种方法可以更改用户的属性。

   client.modify(
          user['dn'],
          [new ldap.Change({
              operation: 'replace',
              modification: {
                _var_: u['st']
              }})]);

当我知道我想要设置的密钥 (_var_) 时,这非常有效。但是我得到了一个对象,其中包含任何要更改的键值对。像u = { sn: 'test', l: 'test', st: 'test'}; 这样的东西现在我想遍历u 的所有属性并修改user 的相关属性(在AD 中)。有没有办法动态设置modification 中的_var_ 键以适应u 的实际键(sn、l、st)?

【问题讨论】:

  • _var_ 在这种情况下包含什么?
  • @zola var 在第一次迭代中应该是 'sn',在第二次迭代中应该是 'l',...

标签: javascript object key


【解决方案1】:

这是你要找的吗?前提是_var_ 包含一个字符串。

var modification = {};
modification[_var_]=u['st'];
client.modify(
      user['dn'],
      [new ldap.Change({
          operation: 'replace',
          modification: modification})]);

所以使用你的 u 对象:

for(var k in u){
    modification[k]=u[k];
}

this fiddle

【讨论】:

  • 为什么要使用“修改:修改”?仅“修改”不就行了吗?
  • 第一个“修改”是你对象中的键,第二个是你在上面两行创建的变量。
  • 它不会只是尝试更改 AD 用户中名为“修改”的字段吗?
  • 据我了解changeJS API,没有。
  • 它不能只使用“修改”吗?- 这取决于您的 nodejs 版本。这是新的ES6 shorthand syntax。例如:let a = 5; let b = {a};b 现在是 {a:5}。在我的 nodejs 7.10.1 上运行良好
猜你喜欢
  • 2014-01-01
  • 2018-01-30
相关资源
最近更新 更多