-2

Why concatenation on values or keys of a javascript array is not allowed?

var arr = {'date': year + ", " + month};

Or

var arr = {'to' + 'day': day};
4

3 回答 3

6

首先,您要声明一个对象而不是数组。

其次,您的第一个示例是可能的:

var year = 2013,
    month = 7;
var obj = {'date': year + ', ' + month };
console.log(JSON.stringify(obj));
> {"date":"2013, 7"}

但是要连接一个属性,你必须做一些不同的事情:

var day = 'Monday',
    obj = {};
obj['to' + 'day'] = day;
console.log(JSON.stringify(obj));
> {"today":"Monday"}

对象有点挑剔,因为冒号 ( :) 左边的值按字面意思解释为字符串(而不是像值一样解析)。也就是说,以下行不通

var day = 'Monday',
    label = 'to' + 'day';
console.log(label);
> "today"
var obj = { label: day };
console.log(obj);
> {"label":"Monday"}

请注意如何label被解释为字符串常量而不是变量名。

于 2013-07-29T18:12:47.780 回答
2

用这个:

var asoc_arr = {};
asoc_arr['to'+'day'] = day;
于 2013-07-29T18:10:48.067 回答
0

由于您正在创建一个新对象,您可能希望从 JSON 字符串开始,对其进行所有必需的连接,然后简单地将其解析为 JS 对象。这是一个简单的例子:

var year = "1990";
var month = "10";
var str = '{"date":"'+year+','+month+'"}';

var obj = JSON.parse(str);
console.log(obj);

> { date: '1990,10' }
于 2013-07-29T18:21:57.660 回答