繁体   English   中英

是否可以将变量的值用作对象声明中的对象键?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM