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