Я пытаюсь извлечь сумму частот из глубоко вложенного объекта JSON.JSON multilevel Object
{ "Baltimore":{
"health": {
"hospital": {
"data": {"frequency": 3, "relevance": 0.7845, "sentiment": "Mixed"},
"metadata": {
"article1": {"author": "Tom Jones", "title": "Current Rises in Health Insurance Policies in Baltimore", "timestamp": "26-FEB-1987 15:01:01.79"},
"article2": {"author": "Bob Jenkins", "title": "Obamacare in Hospitals", "timestamp": "06-SEP-2011 16:32:34.73"},
"article3": {"author": "Tom Jones", "title": "Rises in Hospital Fees", "timestamp": "31-DEC-1991 01:45:59.66"}
}
}
},
"crime": {
"assault": {
"data": {"frequency": 12, "relevance": 0.9045, "sentiment": "Negative"},
"metadata": {
"article1": {"author": "", "title": "Another shooting in Baltimore", "timestamp": "26-FEB-1987 15:01:01.79"},
"article2": {"author": "Anderson Silva", "title": "Street Crime up in cities", "timestamp": "06-SEP-2011 16:32:34.73"},
"article3": {"author": "John Jones", "title": "Rise in assaults in Baltimore", "timestamp": "31-DEC-1991 01:45:59.66"}
}
},
"robbery": {
"data": {"frequency": 15, "relevance": 0.553, "sentiment": "Positive"},
"metadata": {
"article1": {"author": "Rob", "title": "Robbery of Museum in Baltimore", "timestamp": "26-FEB-1987 15:01:01.79"},
"article2": {"author": "Anderson Silva", "title": "Man held at gunpoint for wallet", "timestamp": "06-SEP-2011 16:32:34.73"},
"article3": {"author": "John Jenkins", "title": "Increase in robbery frequency in MD", "timestamp": "31-DEC-1991 01:45:59.66"}
}
}
}
}
}
Я пытаюсь получить счетчик частоты для каждого второго объекта уровня (с учетом Балтимор в качестве первого уровня). Поэтому в этом случае вывод должен быть Baltimore.health = 3 и Baltimore.crime = 27. Объекты третьего уровня не фиксируются в числе. Например, в области здравоохранения могут быть дополнительные объекты, такие как «Безопасность» или что-то в этом роде, каждый из которых имеет собственную частоту. Я пытаюсь сделать так:
function value(obj){
var i=0;
for (var x in obj){
if(obj.hasOwnProperty(x)){
i = i+x.frequency;
}
}
return i;
}
Но когда я передать объект «Obj», й не итерация на объектах.
Какой объект это, что вы пытаетесь передать в функцию? – Guffa
На объектах второго уровня нет частоты. Это гораздо глубже, чем это. – jfriend00
Внутри цикла for вам нужно _obj [x] .frequency_ - x - это строка с именем свойства, это не значение свойства. (Хотя даже это не сработает, потому что _frequency_ вложен глубже.) – nnnnnn