I am building a web scraper using node/puppeteer/cheerio
Using this I am able to console.log the correct strings. I am struggling to understand if this is possible.
$('table[]')
.find("tbody > tr > td")
.each(function (index, element) {
if ((index 1) % 8 == 0) {
console.log($(element).text());
console.log("Start New JSON");
} else {
console.log($(element).text());
}
my output are the following strings
1
2
3
4
5
6
7
8
Start New JSON
9
10
11
12
13
14
15
16
Start New JSON
My Intended Result is:
[
{
"A": "1",
"B": "2",
"C": "3",
"D": "4",
"E": "5",
"F": "6",
"G": "7"
"H": "8"
},
{
"A": "9",
"B": "10",
"C": "11",
"D": "12",
"E": "13",
"F": "14",
"G": "15"
"H": "16"
}
]
CodePudding user response:
You can create your case around this solution:
Basically replace from your each
with reduce
.
let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17];
// input = $('table[]').find("tbody > tr > td")
let output = input.reduce((arr, value, i) => {
let remainder = i % 8;
if (!remainder) {
arr.push({})
};
let obj = arr[arr.length - 1];
let char = String.fromCharCode(97 remainder);
obj[char] = value;
return arr;
}, []);
console.log(output)
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>