非常简单的问题。我有一些假设,为什么这不起作用,但想要一个更学术性的解释。
这有效:
newArray = oldArray.map(function(obj){
return {'key': 'value'};
});
虽然这不是:
newArray = oldArray.map(function(obj){
return {obj.key: obj.value};
});
答案 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中用方括号做你想做的事。