2013-04-10 1 views
0

У меня есть строка, содержащая список словарей. Я хочу сравнить, проверив их ключи не значение. есть ли способ сделать это.сравнить eval со списком словаря на основе его ключа

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 
} 
} 
+0

Это не как объекты работы. Пожалуйста, ознакомьтесь с руководством по JavaScript MDN: https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Working_with_Objects. Связано: http://stackoverflow.com/q/11922383/218196. –

+2

Итак, вы пытаетесь выяснить, совпадает ли ключ (ы) одного объекта с ключом другого объекта? –

+0

Да @Qantas 94 Тяжелый. Есть ли способ сделать это. Я новичок в javascript. нуждаются в хорошем разъяснении относительно этого. – star

ответ

1

Не используйте 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 или 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 свойства, которые содержат значение "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" 
+0

Спасибо за предложение. Здесь я хочу проверить, является ли ключ (ы) одного объекта тем же, что и ключ (ы) другого объекта, или нет. так что я могу использовать его значение, т. е. T1 и T2 в соответствии с ним. – star

Смежные вопросы