2017-02-23 52 views
2

У меня есть функция Reduse в mongoDB. Я хочу печатать AVG городов в каждом штате. я получаю только один правильный результат и остальное будет нанПочему я получаю nan в результате большинства моих результатов

функциональна карта

function map(){ 
key = {state : this.state}; 
values = { numberOfCities:1, statePop: this.pop}; 
emit(key, values)} 

и снижения функции

function reduce(key , values){ 
numberOfCities = 0.0; 
statePop = 0.0; 
avg = 0.0; 
for (i in values){ 
    numberOfCities += values[i].numberOfCities; 
    statePop += values[i].statePop; 
    avg = statePop/numberOfCities; 
} 
return avg} 

Если я вернусь statePop с numberOfCities, я получит правильное число, но если я верну операцию operationPop/numberOfCities, я получу значение nan для него

Ошибка

файл в формате JSON (это одна строка JSon файла)

{ "_id" : "20002", "city" : "WASHINGTON", "loc" : [ -76.990055, 38.902365 ], "pop" : 56756, "state" : "DC" } 
+2

Вы можете console.log (statePop, numberOfCities)? –

+0

Как вы называете 'reduce()', и почему вы не используете аргумент 'key'? – nnnnnn

+0

Ammresh Venugopal, я не понимаю вашу точку –

ответ

0

i является экземпляром вашего объекта значения, а не индекс. Так вместо values[I].property использовать i.property

+0

Я получу nan для всех avg –

+0

Is this.pop действительный номер? –

+0

есть. Я редактирую вопрос, чтобы добавить образец json-файла –