JavaScript 通过变量设置对象键

问题描述 投票:0回答:9

我正在 JavaScript 中构建一些对象并将这些对象推入数组中,我将要在变量中使用的密钥存储在变量中,然后创建我的对象,如下所示:

var key = "happyCount";
myArray.push( { key : someValueArray } );

但是当我尝试检查每个对象的对象数组时,键是

"key"
而不是变量键的值。有什么方法可以从变量中设置键的值吗?

寻找更好的解释: http://jsfiddle.net/Fr6eY/3/

javascript
9个回答
2950
投票

您需要先制作对象,然后使用

[]
进行设置。

var key = "happyCount";
var obj = {};

obj[key] = someValueArray;
myArray.push(obj);

2021 年更新:

ECMAScript 2015 (ES6) 中引入了

计算属性名称功能,该功能允许您以 JavaScript 对象文字表示法动态计算对象属性的名称。

const yourKeyVariable = "happyCount";
const someValueArray= [...];

const obj = {
    [yourKeyVariable]: someValueArray,
}

592
投票

在ES6中,你可以这样做。

var key = "name";
var person = {[key]:"John"}; // same as var person = {"name" : "John"}
console.log(person); // should print  Object { name="John"}

    var key = "name";
    var person = {[key]:"John"};
    console.log(person); // should print  Object { name="John"}

它称为计算属性名称,它使用括号表示法(方括号)实现

[]

示例:

{ [variableName] : someValue }

从 ECMAScript 2015 开始,对象初始值设定项语法也 支持计算属性名称。这允许你输入一个表达式 在括号 [] 中,将被计算并用作属性名称。

对于 ES5,尝试这样的事情

var yourObject = {};

yourObject[yourKey] = "yourValue";

console.log(yourObject );

示例:

var person = {};
var key = "name";

person[key] /* this is same as person.name */ = "John";

console.log(person); // should print  Object { name="John"}

    var person = {};
    var key = "name";
    
    person[key] /* this is same as person.name */ = "John";
    
    console.log(person); // should print  Object { name="John"}


16
投票

现实

JS 中的问题很简单:

{ x: 2 }

与:

相同
{ "x": 2 }

(即使您定义了

x
变量!)

解决方案

在密钥的 identifier 周围添加方括号 []

var key = "happyCount";
myArray.push( { [key] : someValueArray } );

(现在关键字

var
已经很少使用,所以请改用
const
let

tldr;


14
投票
var key = "happyCount";
myArray.push( { [key] : someValueArray } );

14
投票

在 ES6 中我们可以这样写对象

const key= "Name";
const values = "RJK"

const obj = {
    [key]: values,
}

11
投票

用这个。

var key = 'a'
var val = 'b'

console.log({[key]:val})

//a:'b'

0
投票

在 TypeScript 中,它应该看起来像这样

    let title ="Current User";
    type User = {
      [key:string | number | symbol]: any
    };

    let myVar: User = {};

    myVar[ title ] = "App Developer";

    console.log(myVar)// Prints: { Current User:"App Developer"}

0
投票
let key = "name";
let name= "john";
const obj ={
 id:01
}
obj[key] = name;
console.log(obj); // output will {id:01,name:"john}

使用方括号显示它将设置为键


0
投票

给定

var key = "happyCount";
const someValueArray= [1, 3, 5, 7];

按原样使用

key

myArray.push({
  [key]: someValueArray
});

要将

key
与其他前缀或后缀一起使用:

myArray.push({
  [`${key}Array`]: someValueArray
});

来源:计算属性名称

© www.soinside.com 2019 - 2024. All rights reserved.