Javascript 为什么我的大多数结果都是nan

Javascript 为什么我的大多数结果都是nan,javascript,mongodb,mapreduce,Javascript,Mongodb,Mapreduce,我在mongoDB中有Reduse函数。我想打印每个州的平均城市数。 我只得到一个正确的结果,其余的都是nan 映射函数 function map(){ key = {state : this.state}; values = { numberOfCities:1, statePop: this.pop}; emit(key, values)} 以及reduce函数 function reduce(key , values){ numberOfCities = 0.0; statePop

我在mongoDB中有Reduse函数。我想打印每个州的平均城市数。 我只得到一个正确的结果,其余的都是nan

映射函数

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

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}

如果我返回带有numberOfCities的statePop,我将得到正确的数字,但如果我返回操作statePop/numberOfCities,我将得到它的nan值

错误

json文件(这是json文件的一行)


i
是值对象的实例,而不是索引。因此,您可以使用console.log(statePop,numberOfCities)代替
values[I].property
使用
I.property

吗?您如何调用
reduce()
,为什么不使用
参数?Ammresh Venugopal,我不明白您的观点您不应该计算循环外的平均值吗,我在python中运行map和reduce map=Code(open('e-map.js','r').read())reduce=Code(open('e-reduce.js','r').read())results=db.zipcodes.map_reduce(map,reduce,'result')作为results.find()的结果。limit(9):print resultI将为所有avgIs this.pop获取nan。有效数字?是的。我编辑这个问题以添加一个json文件示例
{ "_id" : "20002", "city" : "WASHINGTON", "loc" : [ -76.990055, 38.902365 ], "pop" : 56756, "state" : "DC" }