我不知道';我不知道如何在javascript中实现这个函数

我不知道';我不知道如何在javascript中实现这个函数,javascript,json,mongodb,Javascript,Json,Mongodb,非常感谢你的贡献,所有这些我都做了混合,我已经解决了一部分,但我只剩下一件事。。。 我已经完成了这个函数,它添加num_tweets,当单词为1时添加“单词”,但是当它匹配并且应该为+1时,变量未定义,我不理解原因。。 问题必须通过这些JSON来解决 { "numtweets" : 1, "dic_words" : { "word1" : 1, "word2" : 1,

非常感谢你的贡献,所有这些我都做了混合,我已经解决了一部分,但我只剩下一件事。。。 我已经完成了这个函数,它添加num_tweets,当单词为1时添加“单词”,但是当它匹配并且应该为+1时,变量未定义,我不理解原因。。 问题必须通过这些JSON来解决

{
        "numtweets" : 1,
        "dic_words" : {
                "word1" : 1,
                "word2" : 1,
                "word3" : 1,
                "word4" : 1,
                "word5" : 1,
                "word6" : 1,
                "word7" : 1
        }
}

{
        "numtweets" : 1,
        "dic_words" : {
                "word1" : 1,
                "word2" : 1,
                "word9" : 1
        }
}

{
        "numtweets" : 1,
        "dic_words" : {
                "word1" : 1,
                "word3" : 1,
                "word10" : 1
        }
}
我希望在最后我返回一个json,只添加所有字段,添加contweets,但在本例中匹配的单词也会像这样出现

{
            "numtweets" : 3, //add numtweets
            "dic_words" : {
                    "word1" : 3, //num_occurs word1 in array
                    "word2" : 2, //num_occurs word2 in array
                    "word3" : 2, //num_occurs word3 in array
                    "word4" : 1,  //num_occurs word3 in array
                    "word5" : 1,
                    "word6" : 1,
                    "word7" : 1,
                    "word9" : 1,
                    "word10" : 1
            }
    }
我的职能是

var r =  function(key, values) {
    result = { "numtweets" : 0,
          "dic_words" : {}
        };
      //   print("  entrada: " + tojson(values));
   for (var idx = 0; idx < values.length; idx++) {
     result.numtweets += values[idx].numtweets;
   //  print("  json: " + tojson(values[idx].dic_words));
        for (paraula in values[idx].dic_words) {
            if(values[idx].dic_words.hasOwnProperty(paraula)) {
            if(values[idx].dic_words[paraula]) {
                           result.dic_words[paraula] = result.dic_words[paraula] + values[idx].dic_words[paraula]; //IS these **part result.dic_words[paraula]** is ***undefined***
           }
            else 
               result.dic_words[paraula] = 1; /^* this part is correct, and if the word appers one only it appears ocurrs

               }
        }   
        }
return result;
};
欢迎提供任何建议或帮助…

var数据=[{
“numtweets”:1,
“dic_词”:{
“单词1”:1,
“单词2”:1,
"三字":一,,
"四字":一,,
"五字":一,,
"六字":一,,
“字7”:1
}
},
{
“numtweets”:1,
“dic_词”:{
“单词1”:1,
“单词2”:1,
“单词9”:1
}
},
{
“numtweets”:1,
“dic_词”:{
“单词1”:1,
"三字":一,,
“单词10”:1
}
}];
函数processData(输入){
var result={numtweets:0,dic_单词:{};
input.forEach(函数(项){
结果['numtweets']+=项['numtweets'];
对于(第[‘dic_单词’]项中的变量i){
结果['dic_单词][i]=(结果['dic_单词][i])?结果['dic_单词][i]+项目['dic_单词][i]:项目['dic_单词][i];
}
})
返回结果;
}

console.log(processData(data))
您可以使用以下功能:

函数getSummary(数据){
返回数据。减少(功能(acc,o){
返回{
numtweets:acc.numtweets+(+o.numtweets | | 0),
dic|u单词:Object.keys(o.dic|u单词|{}).reduce(函数(单词,单词){
单词[单词]=(单词[单词]| | 0)+o.dic|u单词[单词];
返回单词;
},acc.dic_单词)
};
},{numtweets:0,dic_单词:{});
}
//样本数据
风险值数据=[{
“numtweets”:1,
"单词":{"单词1:1,"单词2:1,"单词3:1,"单词4:1,,
“单词5”:1,“单词6”:1,“单词7”:1}
}, {
“numtweets”:1,
“单词”:{“单词1”:1,“单词2”:1,“单词9”:1}
}, {
“numtweets”:1,
“单词”:{“单词1”:1,“单词3”:1,“单词10”:1}
},{//添加到测试算法的空对象将继续存在并忽略此。。。
}];
console.log(getSummary(data))
.as控制台包装{最大高度:100%!重要;顶部:0;}
var-arr=[
{
“numtweets”:1,
“dic_词”:{
“单词1”:1,
“单词2”:1,
"三字":一,,
"四字":一,,
"五字":一,,
"六字":一,,
“字7”:1
}
},
{
“numtweets”:1,
“dic_词”:{
“单词1”:1,
“单词2”:1,
“单词9”:1
}
},
{
“numtweets”:1,
“dic_词”:{
“单词1”:1,
"三字":一,,
“单词10”:1
}
}
]
var newObj={numtweets:0,dic_单词:{};
arr.forEach(函数(项、索引、数组){
newObj.numtweets+=item.numtweets;
for(项目dic_字中的var prop){
如果(!newObj.dic_words[prop]){newObj.dic_words[prop]=0};
newObj.dic_单词[prop]+=item.dic_单词[prop];
}
})
console.log(newObj)使用带有ES6箭头功能的方法。

演示

var CountObjVal=[{
“numtweets”:1,
“dic_词”:{
“单词1”:1,
“单词2”:1,
"三字":一,,
"四字":一,,
"五字":一,,
"六字":一,,
“字7”:1
}
},
{
“numtweets”:1,
“dic_词”:{
“单词1”:1,
“单词2”:1,
“单词9”:1
}
},
{
“numtweets”:1,
“dic_词”:{
“单词1”:1,
"三字":一,,
“单词10”:1
}
}];
var r=函数(countObjVals){
var obj={numtweets:0,dic_单词:{};
CountObjVal.map(elem=>Object.keys(elem.dic_单词).map(item=>obj.dic_单词[item]=0));
对于(CountObjVal中的变量i){
obj.numtweets+=CountObjVal[i].numtweets;
Object.keys(CountObjVal[i].dic_words.map(item=>obj.dic_words[item]+=CountObjVal[i].dic_words[item]);
} 
返回obj;
};

console.log(r(CountObjVal))那么问题是什么?您提供了简单得多的代码,但不是您尝试在此处应用的代码,这很不幸。对不起,我尝试了他们给我的所有答案,将代码放在mongodb中,但所有尝试都无效。我不知道原因,因为我是Javascript和mongodb的初学者,出于这个原因,我尝试了其他选项,而改变,它部分起作用。。。但不是很好,100%谢谢,但它给出了一个编译错误。我放了这个(我试图制作一个mapreduce),但它想要这个错误var r=函数(key,countObjVals){var obj={numtweets:0,dic_words:{};CountObjVal.map(elem=>Object.keys(elem.dic_words).map(item=>obj.dic_words[item]=0));for(vari in CountObjVal){obj.numtweets+=CountObjVal[i].numtweets;Object.keys(CountObjVal[i].dic_words).map(item=>obj.dic_words[item]+=CountObjVal[i].dic_words[item])返回obj;}SyntaxError:Unexpected token>@Miki I根据您在评论中的更改更新了我的答案。请检查,我希望它能满足您的期望。对于我部分解决的4个解决方案,我仍然有一个错误
{
                "numtweets" : 3, //add numtweets
                "dic_words" : {
                        **"word1" : NaN, //num_occurs word1 in array MUST BE 3
                        "word2" : NaN, //num_occurs word2 in array MUST BE 2
                        "word3" : NaN, //num_occurs word3 in array MUST BE 2**
                        "word4" : 1,  //num_occurs word3 in array
                        "word5" : 1,
                        "word6" : 1,
                        "word7" : 1,
                        "word9" : 1,
                        "word10" : 1
                }
        }