如果使用另一个对象的调用在JavaScript中构造它,为什么我不能返回一个匿名对象?

时间:2016-05-23 20:09:16

标签: javascript

非常简单的问题。我有一些假设,为什么这不起作用,但想要一个更学术性的解释。

这有效:

newArray = oldArray.map(function(obj){
    return {'key': 'value'};
});

虽然这不是:

newArray = oldArray.map(function(obj){
    return {obj.key: obj.value};
});

2 个答案:

答案 0 :(得分:3)

使用ECMA6语法,您可以:

newArray = oldArray.map(obj => {
    return {[obj.key]: obj.value};
});

如果您想支持旧浏览器,则需要创建一个临时对象:

newArray = oldArray.map(function(obj) {
    var newObj = {};
    newObj[obj.key] = obj.value;
    return newObj;
});

答案 1 :(得分:2)

你需要通过

来做
newArray = oldArray.map(function(obj){
    var foo = {};
    foo[obj.key] = obj.value;
    return foo;
});

有一种方法可以在ES6中用方括号做你想做的事。