2015-06-18 71 views
1

我有一个练习,我不明白,所以我希望对此有所帮助。Javascript模块模式与阵列

我要硬编码一个简单的数组和锻炼告诉我这一点:

通常,当我们创建Web应用程序,我们有测试数据的需要。实现的可重复使用的NodeJS模块,使用JavaScript的模块的模式,其可以提供随机测试数据如以下简述:

var data = dataGenerator.getData(100,"fname, lname, street, city, zip"); 

这应该与表单100的测试数据返回一个JavaScript阵列(未JSON):

[{fname: "Bo", lname:"Hansen", street: "Lyngbyvej 26", city: "Lyngby", zip: "2800"},..] 

如果你这样称呼它:

var data = dataGenerator.getData(25,fname, lname); 

它应该返回25个的测试数据,下面简述:

[{fname: "Bo", lname:"Hansen"},..] 

我这里有一些代码,但这这么想的工作尚未:

var dataGenerator = (function() { 
var data = [ 
    { 
     fname : "Bo", 
     lname : "Bosen", 
     ... 
    }, 
    { 
     fname : "jashkjh", 
     lname : "jhsdkfj", 
     ... 
    }, 
    ... 
]; 

return {getData : function (count, fields) { 
    var result = []; 
    var i = 0; 
    var field; 
    var j; 


    fields = fields.split(/\s*,\s*/); 


    while (i < count && i < data.length) { 

     result.push({}); 

     // Det objekt vi arbejder på lige nu er i result[i] 
     for (j = 0; j < fields.length; j++) { 

      result[i][fields[j]] = data[i][fields[j]]; 
     } 

     i++; 
    }  

    return result; 
}}; 
})(); 

module.exports = dataGenerator; 
+3

Stackoverflow通常是一个不好的地方寻求帮助作业。然而,如果你确实需要帮助,你应该解释你所知道的,你尝试过的以及你不了解的。 –

+0

我同意,但现在我不指望人们为我编写所有的代码,但可以向正确的方向提供一点提示。 –

+1

那么你的障碍是什么?如何编写node.js模块?如何实现dataGenerator本身?请先显示一些努力。 – pawel

回答

0

我不知道数据的身体,但可以尝试:

var data=[{fname:"Bo",lname:"Bosen",street:"Lyngbyvej 26",city:"Lyngby",zip:"2800"},{fname:"jashkjh",lname:"jhsdkfj",street:"Fmsn 9",city:"Pra",zip:"1600"},{fname:"eeee",lname:"aaaa",street:"Eda 5",city:"Pre",zip:"3500"}]; 
 

 
var dataGenerator = { 
 
\t getData: function(count, fieldsStr){ 
 
\t \t var result = [], fields = fieldsStr.split(/\s*,\s*/), i = 0; 
 

 
\t \t while(i < count && data[i]){ 
 
\t \t \t var item = {}; 
 

 
\t \t \t fields.forEach(function(key){ 
 
\t \t \t \t item[key] = data[i][key] 
 
\t \t \t }); 
 

 
\t \t \t result.push(item); 
 

 
\t \t \t i++ 
 
\t \t } 
 
\t \t return result 
 
\t } 
 
} 
 

 
var results = dataGenerator.getData(2,"fname, zip"); 
 
document.write(JSON.stringify(results))

+0

谢谢,它的工作,现在我可以玩一点。欣赏它! –