我想创建一个json对象作为post数组发送,但我需要动态创建密钥
var id = $('#myInput').val(); var post = { 'product[123]': 'myValue',// this works fine - but isn't dynamic 'product['+id+']': 'myValue' // this does not work }
将其作为字符串发送工作正常,但是当我想让它更具动态性时,我遇到了问题.我在这里遗漏了一些非常简单的东西,还是我想做一些Javascript不应该做的事情?
解决方法
(请注意,这与JSON无关.你没有在那里使用JSON,你使用的是
object initializer.
JSON是一种文本(非代码)格式,它是JavaScript的对象初始化语法的一个子集.)
使用[]表示法在对象初始值设定项之外执行:
var id = $('#myInput').val(); var post = {}; post[product[id]] = 'myValue';
这将获取product [id]的值(在运行时)并将其用作属性的键.如果你希望密钥在id为123时确实是产品[123],那么你可以使用它:
post['product[' + id + ']'] = 'myValue';
更通用的讨论:
var a = "foo"; var obj = {}; obj[a] = "bar"; console.log(obj.foo); // "bar"
JavaScript允许您以两种方式指定属性键:使用点分表示法和文字(obj.foo),或使用括号表示法和字符串(obj [“foo”]).在后一种情况下,字符串不必是字符串文字,它可以是任何表达式的结果.