Создать JSON из двух разных селекторов классов? - PullRequest
0 голосов
/ 27 сентября 2018

мой пример кода ниже:

var request = require('request');
var cheerio = require('cheerio');

url = 'example.com';

request(url, function(error, response, html){
 if(!error){
  var $ = cheerio.load(html);
  var json = { name : "", number : ""};

  let name = [];
    $('.name-cell').map(function(i, elm) {
    name[i] = $(this).text().trim();
    json.name = name;
  })

  let rank = [];
    $('.number-cell').map(function(i, elm) {
    number[i] = $(this).text().trim();
    json.number = number;
  })

  var obj = name.concat(number);
  console.log(obj);
}

})

выход:

{ "name": [
    "Name 1",
    "Name n"
    ],
  "number": [
    "Number 1",
    "Number n"
    ] }

желаемый результат (или что-нибудь подобное):

{ ["name": "Name 1", "number": "Number 1"] }

Любые предложения или рекомендации очень ценятся - так как я не был в состоянии очиститьданные от двух разных селекторов классов.

1 Ответ

0 голосов
/ 27 сентября 2018

Ваш "желаемый вывод" не является допустимым JavaScript.Кажется, вам нужен массив объектов:

[ // An array!
  { "name": "Name 1", "number": "Number 1" }, // An object!
  ... 
]

В следующем коде используется .eq и индекс итерации для выбора соответствующих '.number-cell' элементов.obj должен быть массивом объектов.

var $ = cheerio.load(html);
var names = $('.name-cell'), cells = $('.number-cell');

var obj = names.map(function(i) {
  return {
     name: $(this).text().trim(),
     number: cells.eq(i).text().trim()
  }
});

console.log(obj);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...