这样的问题:
function(value, key) { ret.push({key: value}); }
key会被解析成字符串"key"
,期望是变量key
例当key="abc",value="123"
上述实际变成{"key":"123"}
应该是{"abc":"123"}
最直接的答案是 var o = {}; o[key] = value; ret.push(o);
但是有没有更简洁的方法?
以下是讨论结果
@240 var a={},b=a[key]=value,c=ret.push(a); @hotor var c;ret.push((c={},c[a]=b,c)); @Gaubee ret.push(eval("({"+key+":\""+value+"\"})")); @hotor function(a,b,c){ret.push((c={},c[a]=b,c));} @240 ret[ret.push({})-1][key]=value; @Gaubee (ret[ret.length] = {})[key] = value;
自己的例子