是否可以在对象键中进行算术运算?

时间:2016-07-26 15:31:59

标签: javascript object key

我有一个对象,其中键是任意值:

console.log( chainResidue.reduce( 
   (res, obj) => (res[obj.chainId] ? res[obj.chainId].push(obj.residueNumber) : 0, res), 
                 chainIdList.reduce( (obj, id) => (obj[id] = [], obj), {} ))); 

在某些情况下,如果我做一些数学计算会更清楚,例如:

{
  1300: 'banana',
  267000: 'cheese',
  4000000: 'goat'
}

是否可以在JavaScript中使用键进行数学运算?

我试过了:

12 * 1000 * 1000: 'horse',

但这是一个语法错误。

3 个答案:

答案 0 :(得分:9)

如果您的浏览器支持ES6,那么您可以使用“计算密钥”。语法是关闭到您尝试的内容。如果您使用[],则应该有效:

{
    [12 * 1000 * 1000]: 'horse'
}

文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names

Browser Support:Chrome,Firefox 34 +,Safari 7.1 +

答案 1 :(得分:4)

初始化对象时,不能使用math来定义键。但是,您可以使用更长的符号:

obj[(12 * 1000 * 1000)] = 'horse';

编辑:显然,看起来你可以在ES6中使用计算符号,如上所述。

var obj = {
  1300: 'banana',
  267000: 'cheese',
  4000000: 'goat',
  [12 * 1000 * 1000]: 'horse'
}

答案 2 :(得分:3)

不确定。如果您使用的是ES6,则可以使用以下表示法。它被称为Computed Property Names

{
  1300: 'banana',
  267000: 'cheese',
  4000000: 'goat',
  [12 * 1000 * 1000]: 'horse'
}