Javascript 根据eval的键将eval与字典列表进行比较

Javascript 根据eval的键将eval与字典列表进行比较,javascript,Javascript,我有一个包含字典列表的字符串。 我想通过检查它们的键而不是值来进行比较。有没有办法做到这一点 data = '[{ "group1" : "T1"}, { "group1" : "T2"}, { "group2" : "T3"}]'; 我如何根据这些字典的键来比较它们呢。例如,我使用了: dataObj = eval(data); //generate 3 objects for data. 这里dataObj[0]将引用{“group1”:“T1”} 为此,我完成了以下代码: for(i

我有一个包含字典列表的字符串。 我想通过检查它们的键而不是值来进行比较。有没有办法做到这一点

data = '[{ "group1" : "T1"}, { "group1" : "T2"}, { "group2" : "T3"}]';
我如何根据这些字典的键来比较它们呢。例如,我使用了:

dataObj = eval(data);  //generate 3 objects for data.
这里
dataObj[0]
将引用
{“group1”:“T1”}
为此,我完成了以下代码:

for(i=0;i<dataObj.length;i++){
if (dataObj[i].key == dataObj[i].key){         //<-- i am not getting what to do to compare their keys i.e. "group1" and "group1"
//my other statements
}
}

for(i=0;i不要使用
eval
而是使用JSON.parse]()。如果在一些旧浏览器中不可用,那么有很多实现比仅使用
eval
更容易受到攻击

说,有:

var data = '[{ "group1" : "T1"}, { "group1" : "T2"}, { "group2" : "T3"}]';
var array = JSON.parse(data);
将生成一个对象数组,每个对象都有一个自己的属性,称为
group1
group2

var myobj = {"group1" : "T1"}
是一个,它与以下内容完全相同:

var myobj = new Object();
myobj.group1 = "T1";
因此,正如您所看到的,任何地方都没有
key
属性

不清楚要比较什么,还因为第三个对象似乎具有不同的属性名称

已更新: 关于您的评论,这里的要点是没有“对象键”,只有对象的属性。这意味着您需要事先知道“键”的名称才能使用它:

array[0].group1 === array[1].group1 // false, one is "T1", one is "T2" 
如果希望具有包含值
“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" 

对象不是这样工作的。请查看MDN JavaScript指南:。相关:。那么您是否正在尝试查看一个对象的键是否与另一个对象的键相同?是的@Qantas 94 Heavy。有什么方法可以这样做吗?我是javascript新手。需要对此做一个很好的澄清。@star:那么你想比较哪一个,你想发生什么?此外,似乎没有理由
eval
字符串,而不仅仅是最初编写代码:
var dataObj=[{“group1”:“T1”},{“group1”:“T2”},{“group2”:“T3”}];
.Eval通常被认为是有害的,因为它使代码更难理解,除非绝对必要,否则应该避免。感谢您的建议。这里我想检查一个对象的键是否与另一个对象的键相同或者不是,这样我就可以根据它使用它的值,即T1和T2。