为什么不是't用于将每个元素写入文件的循环
Why isn't this for loop writing each element to a file?
这是我的代码:
var data = require('./campSample.json');
var dataArray = data.resultset.result;
var fs = require('fs');
for(var i = 0; i < dataArray.length; i++){
fs.writeFile("./campList", dataArray[i]["-facilityName"], function (err) {
if(err){
return console.log(err);
}
});
}
我正在尝试让for循环遍历数组中的每个项,获取设备名称,并将设备名称写入文件。当我运行上面的代码时,它只写数组中第一个项的facilityName。有更好的方法吗?我正在使用的campSample.json只是一个示例。我想使用的实际数组中有大约4000个项目
{
"resultset": {
"-count": "4904",
"-resultType": "campgrounds",
"result": [
{
"-availabilityStatus": "N",
"-contractID": "GA",
"-contractType": "STATE",
"-facilityID": "530145",
"-facilityName": "A. H. STEPHENS STATE HISTORIC PARK",
"-faciltyPhoto": "/webphotos/GA/pid530145/0/80x53.jpg",
"-latitude": "33.5633333",
"-longitude": "-82.8966667",
"-shortName": "C145",
"-sitesWithAmps": "Y",
"-sitesWithPetsAllowed": "Y",
"-sitesWithSewerHookup": "N",
"-sitesWithWaterHookup": "Y",
"-state": "GA"
},
{
"-availabilityStatus": "N",
"-contractID": "OH",
"-contractType": "STATE",
"-facilityID": "960023",
"-facilityName": "A.W. MARION STATE PARK",
"-faciltyPhoto": "/webphotos/OH/pid960023/0/80x53.jpg",
"-latitude": "39.6336111",
"-longitude": "-82.8747222",
"-shortName": "P023",
"-sitesWithAmps": "Y",
"-sitesWithPetsAllowed": "Y",
"-sitesWithSewerHookup": "N",
"-sitesWithWaterHookup": "N",
"-state": "OH"
},
{
"-availabilityStatus": "N",
"-contractID": "NRSO",
"-contractType": "FEDERAL",
"-facilityID": "72346",
"-facilityName": "ACKER ROCK LOOKOUT",
"-faciltyPhoto": "/webphotos/NRSO/pid72346/0/80x53.jpg",
"-latitude": "43.0523056",
"-longitude": "-122.6456111",
"-shortName": "ARCL",
"-sitesWithAmps": "N",
"-sitesWithPetsAllowed": "Y",
"-sitesWithSewerHookup": "N",
"-sitesWithWaterHookup": "N",
"-state": "OR"
}
]
}
}
您应该事先收集所有名称,然后只需一个IO请求就可以将所有名称写入./campList
。
var names = dataArray.map(function(result) {
return result["-facilityName"];
}).join(''n');
fs.writeFile("./campList", names, function(err) {
if (err) {
return console.log(err);
}
});
来自writeFile
文档:
请注意,在同一文件上多次使用fs.writeFile而不等待回调是不安全的。对于这种情况,强烈建议使用fs.createWriteStream
另外:
将数据异步写入文件,如果文件已存在,则替换该文件。
根据您的注释,您需要将内容附加到文件中,因此以下代码将在中工作
var data = require('./campSample.json');
var dataArray = data.resultset.result;
var fs = require('fs');
for(var i = 0; i < dataArray.length; i++){
fs.appendFile("./campList", dataArray[i]["-facilityName"]+''r'n', function (err) {
if(err){
return console.log(err);
}
});
}
相关文章:
- 将包含SVG元素的HTML转换为图像文件
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 从IE中的不同元素调用时,文件输入控件未正确启动
- 在JSON文件中查找一个元素,并将其显示为HTML
- 如何在php中按元素按字母顺序排列json文件
- 如何将旋转的画布元素保存到文件中
- 无法查找元素'手动加载CSS文件时的CSS属性
- SVG使用Javascript将文件上载到DOM就绪元素
- 如何使用量角器将文件上传到ng文件上传元素
- 访问嵌入文件的元素
- 如何在不使用任何 html 输入/搜索元素的情况下读取本地客户端文本文件
- 使用 jQuery 从 HTML 中的多个图像元素中删除文件路径
- 我正在尝试从 xhtml 文件中动态提取所有
元素,并使用 javascript 将它们放入选择列表中
- 我需要使用AngularJS从JSON文件创建HTML元素
- 从上传的文件中获取svg元素的宽度
- 使用script元素上的html data-*属性来配置引用的脚本文件
- 当.js和.html不在同一文件夹中时,如何在Aurelia中创建自定义元素
- 在不同的html文件中将html从一个元素替换为另一个元素
- 为什么不是't用于将每个元素写入文件的循环
- on文件输入元素的更改事件