我需要帮助弄清楚如何保存阵列中的输出。我尝试将输出附加到csv,但这给了我一个空的csv或一个csv,并在数组中为每个项目附加了[object]字。
这是我的数组中的输出示例:
{
date: '2014-01-25',
firstBoxerRating: [Array],
firstBoxerWeight: 235.5,
judges: [Array],
links: [Object],
location: 'Golden Nugget Casino, Atlantic City',
metadata: '<a href="/en/judge/401833">Joseph Pasquale</a> 75-77 | <a href="/en/judge/401066">Tony Perez</a> 78-74 | <a href="/en/judge/401734">Barbara Perez</a> 78-74\n' +
'<br>',
numberOfRounds: [Array],
outcome: 'win',
rating: 20,
referee: [Object],
result: [Array],
secondBoxer: [Object],
secondBoxerLast6: [Array],
secondBoxerRating: [Array],
secondBoxerRecord: [Object],
secondBoxerWeight: 236.5,
titles: []
},
{
date: '2014-05-16',
firstBoxerRating: [Array],
firstBoxerWeight: 240.75,
judges: [Array],
links: [Object],
location: '2300 Arena, Philadelphia',
metadata: '<a href="/en/judge/402009">Pierre Benoist</a> 79-73 | <a href="/en/judge/401245">Lynne Carter</a> 78-74 | <a href="/en/judge/677642">Eric Dali</a> 79-73\n' +
'<br>',
numberOfRounds: [Array],
outcome: 'win',
rating: 20,
referee: [Object],
result: [Array],
secondBoxer: [Object],
secondBoxerLast6: [Array],
secondBoxerRating: [Array],
secondBoxerRecord: [Object],
secondBoxerWeight: 238,
titles: []
},
{
date: '2014-08-02',
firstBoxerRating: [Array],
firstBoxerWeight: 236.5,
judges: [Array],
links: [Object],
location: 'Revel Resort, Atlantic City',
metadata: ' time: 1:48\n' +
' | <a href="/en/judge/401683">Lindsey Page</a>\n' +
'<br>Williams down three times\n' +
'<br>',
numberOfRounds: [Array],
outcome: 'win',
rating: 20,
referee: [Object],
result: [Array],
secondBoxer: [Object],
secondBoxerLast6: [Array],
secondBoxerRating: [Array],
secondBoxerRecord: [Object],
secondBoxerWeight: 233,
titles: []
},
{
date: '2014-09-19',
firstBoxerRating: [Array],
firstBoxerWeight: 237,
judges: [Array],
links: [Object],
location: "Harrah's Philadelphia, Chester",
metadata: ' time: 1:34\n' +
' | <span>referee:</span> <a href="/en/referee/401364">Benjy Esteves Jr</a><span> | </span><a href="/en/judge/401043">Bernard Bruni</a> | <a href="/en/judge/400983">Larry Hazzard Jr</a> | <a href="/en/judge/402781">Alan Rubenstein</a>\n' +
'<br>',
numberOfRounds: [Array],
outcome: 'win',
rating: 20,
referee: [Object],
result: [Array],
secondBoxer: [Object],
secondBoxerLast6: [Array],
secondBoxerRating: [Array],
secondBoxerRecord: [Object],
secondBoxerWeight: 288,
titles: []
},
{
date: '2014-11-14',
firstBoxerRating: [Array],
firstBoxerWeight: 244,
judges: [Array],
links: [Object],
location: "Harrah's Philadelphia, Chester",
metadata: ' time: 2:28\n' +
' | <span>referee:</span> <a href="/en/referee/401364">Benjy Esteves Jr</a><span> | </span><a href="/en/judge/677642">Eric Dali</a> | <a href="/en/judge/400983">Larry Hazzard Jr</a> | <a href="/en/judge/671032">Mike Somma</a>\n' +
'<br>',
numberOfRounds: [Array],
outcome: 'win',
rating: 40,
referee: [Object],
result: [Array],
secondBoxer: [Object],
secondBoxerLast6: [Array],
secondBoxerRating: [Array],
secondBoxerRecord: [Object],
secondBoxerWeight: 209,
titles: []
},
我假设此输出是JSON对象。
这是我用来产生此输出的代码:
async function writeData() {
const csv = require('csv-parser')
const results = [];
fs.createReadStream('C:\\Users\\User\\Documents\\testingclean.csv')
.pipe(csv())
.on('data',(data)=> results.push(data))
.on('end', async () => {
const cookieJar = await getCookieJar();
const promises = [];
results.forEach((data) => {
promises.push(boxrec.getPersonById(cookieJar,data.id));
})
const fighters = await Promise.all(promises); // Fighters is an array
fighters.forEach((fighter) => {
console.log(fighter.output);
})
});
};
try {
writeData();
} catch (error) {
console.log("Error in writeData: " + error);
}
答案 0 :(得分:1)
类似的事情应该起作用。
const sections = document.querySelectorAll(".watch-me");
const options = {
root:null,// its the viewport
threshold: 0.7 //if 1 then 100% of item needs to be on the page
};
const observer = new IntersectionObserver((entries,observer)=>{
entries.forEach(entry => {
console.log("Called before if statements!");
console.log(!entry.isIntersecting);
if(!entry.isIntersecting){
if(entry.target.classList.contains("header")){
document.getElementById("nav-home").classList.remove("nav-active");
}else if(entry.target.classList.contains("skills")){
document.getElementById("nav-benefits").classList.remove("nav-active");
}else if(entry.target.classList.contains("inventory")){
document.getElementById("nav-inventory").classList.remove("nav-active");
}else if(entry.target.classList.contains("featured")){
document.getElementById("nav-featured").classList.remove("nav-active");
}else if(entry.target.classList.contains("gallery")){
document.getElementById("nav-gallery").classList.remove("nav-active");
}else if(entry.target.classList.contains("services")){
document.getElementById("nav-services").classList.remove("nav-active");
}else if(entry.target.classList.contains("reviews")){
document.getElementById("nav-reviews").classList.remove("nav-active");
}
console.log(entry.target);
return;
}else if(entry.target.classList.contains("header")){
// document.querySelectorAll('.nav-active').classList.remove("nav-active");
document.getElementById("nav-home").classList.add("nav-active");
// entry.target.classList.add("nav-active");
}else if(entry.target.classList.contains("skills")){
document.getElementById("nav-benefits").classList.add("nav-active");
}else if(entry.target.classList.contains("inventory")){
document.getElementById("nav-inventory").classList.add("nav-active");
}else if(entry.target.classList.contains("featured")){
document.getElementById("nav-featured").classList.add("nav-active");
}else if(entry.target.classList.contains("gallery")){
document.getElementById("nav-gallery").classList.add("nav-active");
}else if(entry.target.classList.contains("services")){
document.getElementById("nav-services").classList.add("nav-active");
}else if(entry.target.classList.contains("reviews")){
document.getElementById("nav-reviews").classList.add("nav-active");
}
});
}, options);
sections.forEach(section => {
observer.observe(section);
});
未测试代码。另外,fighters.forEach((fighter) => {
let data = '';
for (const key in fighter.output) {
if (Array.isArray(fighter.output[key])) {
data += JSON.stringify(fighter.output[key]) + ',';
} else if (typeof fighter.output[key] === 'object') {
data += JSON.stringify(fighter.output[key]) + ',';
} else {
data += fighter.output[key] + ',';
}
}
data = data.replace(/(^,)|(,$)/g, ""); // Remove trailing comma
data += '\n'; // Add new line
fs.appendFile('data.csv', data, (err) => {
if (err) throw err;
});
});
文件可能需要一些时间来创建,具体取决于数据大小。 data.csv
外观将甚至在nodejs完成写入文件之前完成。因此,程序可能会退出,但在后台编写可能会继续进行直到完成。您必须维护forEach
执行部分。如何处理它不在此问题的范围内。