[英]Is it possible to use a variable's value as an object key inside object declaration?
我想按照以下方式做一些事情:
var firstName = "alan";
var secondName = "antonella";
var statusOfPeople = {
firstName: "excellent",
secondName: "superb"
};
console.log(JSON.stringify(statusOfPeople));
并获得以下输出:
{ "alan": "excellent", "antonella": "superb" }
这可能吗? 不这样做吗?
var statusOfPeople = {};
statusOfPeople[firstName] = "excellent";
statusOfPeople[secondName] = "superb";
不,不是直接在对象文字声明中。
无法确定是要使用变量值,还是要使用标识符本身作为属性名称。
您可以创建一个辅助函数,该函数需要键/值对的数组,如果需要的话:
function makeObject() {
var obj = {};
for( var i = 0; i < arguments.length; ++i ) {
obj[ arguments[i][0] ] = arguments[i][1];
}
return obj;
}
并像这样使用它:
var firstName = "alan";
var secondName = "antonella";
var statusOfPeople = makeObject(
[firstName, "excellent"],
[secondName, "superb"]
);
console.log(JSON.stringify(statusOfPeople));
// {"alan":"excellent","antonella":"superb"}
如果这样做,您甚至可以减少语法:
function makeObject() {
var obj = {};
for( var i = 0; i < arguments.length; i+=2 ) {
obj[ arguments[i] ] = arguments[i+1];
}
return obj;
}
并像这样使用它:
var firstName = "alan";
var secondName = "antonella";
var statusOfPeople = makeObject(
firstName, "excellent",
secondName, "superb"
);
console.log(JSON.stringify(statusOfPeople));
// {"alan":"excellent","antonella":"superb"}
不能。对象文字不能将变量的值用作键。 您可以引用键的事实可能使它看起来像真实值,但事实并非如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.