通过使用节点js,我通过解析多个json文件获取特定值来生成下面的数组(2)。
我的json文件包含ID列表及其状态:isAvailable或undefined。
所以在我的代码中,我解析了所有的json文件,但只查找第一个ID,并在下面的图片中获取可用性的statuts。如果它是真的意味着该ID可用。正如您可以看到文件的名称,它是生成json的日期和时间。
所以我想要实现的是编写一个函数或任何简单的函数,在这里我可以看到你在图片中看到的数组。 例: 我们可以看到状态可用于第一个文件,我想要恢复具有可用状态的第一个文件名
(" {fileName:' 2017-03-17T11:39:36 + 01:00', 状态:可用}"
当状态停止可用时,在我们的示例中({fileName:' 2017-04-06T11:19:17 + 02:00',content:undefined}) 得到:
{fileName:' 2017-04-06T11:19:17 + 02:00',状态:不可用}
所以这是我生成这个数组的代码的一部分:
Promise.mapSeries(filenames, function(fileName) {
var contents = fs
.readFileAsync("./availibility/" + fileName, "utf8")
.catch(function ignore() {});
return Promise.join(contents, function(contents) {
return {
fileName,
contents
};
});
}).each(function(eachfile) {
if(eachfile.contents){
jsonobject = JSON.parse(eachfile.contents);
if(jsonobject && jsonobject.hasOwnProperty('messages'))
// console.log(jsonobject.messages[0].message.results[2]);
eachfile.contents = jsonobject.messages[0].message.results[1].isAvailable;
}
eachfile.fileName = eachfile.fileName.substring('revision_'.length,(eachfile.fileName.length-5));
console.log(eachfile);
})
请有人帮助我
谢谢,
答案 0 :(得分:1)
假设你有一个数组:
[
{
filename : "2017-03-23 00:00:00",
contents : true
},
...
{
filename : "2017-03-23 00:00:00",
contents : undefined
},
{
filename : "2017-03-23 00:00:00",
contents : undefined
},
{
filename : "2017-03-23 00:00:00",
contents : true
}
]
其中......表示内容值为true的长对象流。 您希望最终得到一个对象列表,而没有具有相同内容值的后续对象,这意味着结果将如下所示:
[
{
filename : "2017-03-23 00:00:00",
contents : true
},
{
filename : "2017-03-23 00:00:00",
contents : undefined
},
{
filename : "2017-03-23 00:00:00",
contents : true
}
]
我将使用jQuery,因为这是一个我熟悉的javascript框架,但你应该能够轻松地将它翻译成你正在使用的任何框架。
function doit(dataArray) {
var resultList = [];
var currentContent = "";
$.each(dataArray, function(index, value) {
if(currentContent != value.content) {
resultList.push(value);
currentContent = value.content;
}
});
console.log(resultList);
}
请注意,您需要一个数组,其数据看起来与图片中的数据相同,但是,您需要打印每一行。您可能需要将这些行添加到新数组中,然后将该数组传递给此函数。