【问题标题】:JS, set object property as value from another object property [duplicate]JS,将对象属性设置为另一个对象属性的值[重复]
【发布时间】:2015-10-22 11:26:18
【问题描述】:

我想为对象属性提供一个值,但它来自另一个对象。情况是这样的:

    c.query('SELECT `' + field + '` FROM `table` WHERE `' + field + '` = :' + field,
            { field: value })
        .on('result', function(res) {
            res.on('row', function(row) {
                callback(inspect(row));
            });
        });

我想以发送对象{field: 'someField', value: 'someValue'} 的方式自动化它,并在上面代码的第二行中使用引用来设置对象的属性。

我想出了这个代码:

    var a = {
        field: 'email',
        value: 'john.doe@gmail.com'
    };

    var b = {
        [a.field]: a.value
    };

    console.log(b);

它在这里工作:jsFiddle,但在实际的 node.js 服务器脚本中它返回错误unexpected token "[" 所以它就像我无法从另一个对象属性引用设置对象属性。有人有什么想法吗?

【问题讨论】:

  • 在你的现实世界中,'a' 已经被定义,并且在'b' 中被访问时设置了值?
  • 如果你在你的节点环境中引入babel,你的代码就可以工作了。对象字面量的动态属性分配是 ES6 规范的一部分,它的支持非常有限,但如果您转译代码就可以正常工作。

标签: javascript node.js


【解决方案1】:

b = {}; b[a.field] = a.value;

是最接近你的表示形式,我怀疑它可以跨 JS 版本工作。

【讨论】:

  • 这是我在 jsfiddle 链接中提供的,它在真实环境中不起作用
  • @patrickmevia。这与您的小提琴中的内容不同。此答案将空对象的初始化分开,然后使用括号访问表示法添加属性名称。您正试图一口气完成。直到 ECMAScript 的 Harmony 版本才支持这一点。见wiki.ecmascript.org/…
  • 是的,工作,谢谢
  • 所以,另一种解决方案是从 node 跳转到 io.js。
猜你喜欢
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 2022-11-10
  • 2021-09-10
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多