不要使用eval
JSON.parse]( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/parse ) 代替。如果它在某些旧浏览器中不可用,那么有很多实现比仅eval
.
这么说,有:
var data = '[{ "group1" : "T1"}, { "group1" : "T2"}, { "group2" : "T3"}]';
var array = JSON.parse(data);
将生成一个对象数组,每个对象都有一个名为group1
or的属性group2
。要清楚:
var myobj = {"group1" : "T1"}
是一个Object literal,它与以下内容完全相同:
var myobj = new Object();
myobj.group1 = "T1";
因此,如您所见,key
任何地方都没有财产。
目前尚不清楚您要比较什么,还因为第三个对象似乎具有不同的属性名称。
更新:关于您的评论,这里的重点是没有“对象键”,只有对象的属性。这意味着,您需要提前知道“密钥”的名称才能使用它:
array[0].group1 === array[1].group1 // false, one is "T1", one is "T2"
如果你想要一个key
包含 value 的属性,那么"group1"
你的对象需要不同:
var data = '[{"key" : "group1", "value": "T1"}, {"key": "group1", "value" : "T2"}, { "key" : "group2", "value" : "T3"}]'
然后,您可以拥有:
var array = JSON.parse(data);
array[0].key === array[1].key // true, both are "group1"
array[0].value === array[1].value // false, one is "T1", one is "T2"