node.js中列表的总和数

时间:2015-04-07 16:55:44

标签: javascript node.js

我刚开始学习node.js. 我正在尝试创建一个从文件中获取列表的脚本。列表就是这样构建的

Bob:110
Mike:120
Bob:334
Dan:240

并将提供此输出

name value

应该将与同名相关联的数字相加。

所以在我的例子中它会打印

Bob 444
Mike 120
Dan 240

我使用了在此网站中找到的帮助来创建一些基本脚本

fs = require('fs');
var array = fs.readFileSync('C:\\data.txt').toString().split("\n");

var items = {}, base, key;
for (var i = 0; i < array.length; i++) {
    base = array[i];
    key = base[0];
    if (!items[key]) {
        items[key] = 0;
    }
    items[key] += base[1];
}

var outputArr = [], temp;
for (key in items) {
    temp = [key, items[key]]
    outputArr.push(temp);
}
console.log(outputArr);

请注意,我从文本文件中获取列表,但它目前包含我在此问题中发布的内容。 我得到的输出是非常愚蠢的,我不知道为什么。 这是我的输出:

[ [ 'B', '0oo' ],
  [ 'M', '0i' ],
  [ 'D', '0a' ],
  [ 'undefined', NaN ] ]

任何人都可以帮助我理解为什么这不能正常工作并告诉我如何解决它?

顺便说一句,我不确定这是否是在node.js中完成此类任务的正确思路。我很乐意收到反馈!

非常感谢!

1 个答案:

答案 0 :(得分:1)

好吧,你可以使用一个功能来满足你的需求:

function PrintAllValuesInList(name,list){
     var values = [];
     for (var i = 0 ; i < list.length ; i++){
        if (list[i].name == name)
           values.push(list[i].value);
     }
     console.log("Name ",name, " Values ", values.join());       
  }

对此的呼吁将是:

var arr = [{ name: 'x', value: 'a'},
           { name: 'y', value: 'b'},
           { name: 'x', value: 'c'},
           { name: 'z', value: 'd'}];

PrintAllValuesInList('x',arr);

输出:

Name  x  Values  a,c

以下是plunker:Plunker

谢谢,如果我能提供帮助。