简体   繁体   English

使用每个 function 创建新的对象数组

[英]Creating new Array of objects with an each function

I am building a web scraper using node/puppeteer/cheerio我正在使用 node/puppeteer/cheerio 构建 web 刮板

Using this I am able to console.log the correct strings.使用它,我可以 console.log 正确的字符串。 I am struggling to understand if this is possible.我很难理解这是否可能。

$('table[class="ad_tab"]')
  .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我的 output 是以下字符串

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"
  }
]

You can create your case around this solution: Basically replace from your each with reduce .您可以围绕此解决方案创建您的案例:基本上将您的each替换为reduce

 let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]; // input = $('table[class="ad_tab"]').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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM