Javascript模块模式与数组

时间:2015-06-18 12:06:23

标签: javascript arrays node.js

我有一个我不太懂的练习,所以我希望能为此提供一些帮助。

我应该对一个简单的数组进行硬编码,练习告诉我:

  

通常,当我们创建Web应用程序时,我们需要测试数据。使用JavaScripts模块模式实现可重用的nodejs模块,该模块可以提供如下所示的随机测试数据:

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;

1 个答案:

答案 0 :(得分:0)

我不知道数据正文,但可以尝试:

&#13;
&#13;
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 = {
	getData: function(count, fieldsStr){
		var result = [], fields = fieldsStr.split(/\s*,\s*/), i = 0;

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

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

			result.push(item);

			i++
		}
		return result
	}
}

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