Форматирование данных в JS, удаление информации AM / PM и запятой в сумме - PullRequest
0 голосов
/ 25 апреля 2018

Я должен возвращать массив только в этом формате. Как добиться этого. Заранее спасибо.

Мой результат возвращается таким образом.

[{"klasses":[{"flightCode":"SHA735","departure":"03:50 PM","arrival":"04:15 PM","fareCode":"T Class","fare":"4,000","baggage":"0"},{"flightCode":"SHA735","departure":"03:50 PM","arrival":"04:15 PM","fareCode":"S Class","fare":"5,000","baggage":"0"},{"flightCode":"SHA735","departure":"03:50 PM","arrival":"04:15 PM","fareCode":"E Class","fare":"5,300","baggage":"0"}]}]

но мне нужно это только исключая информацию о AM / PM и запятую между суммой тарифа.

[{"flightCode":"SHA735","departure":"03:50","arrival":"04:15","fareCode":"T Class","fare":"4000","baggage":"0"},{"flightCode":"SHA735","departure":"03:50","arrival":"04:15","fareCode":"S Class","fare":"5000","baggage":"0"},{"flightCode":"SHA735","departure":"03:50","arrival":"04:15","fareCode":"E Class","fare":"5300","baggage":"10"}]

и мой код ниже:

const $ = cheerio.load(html);
    const format = {
         klasses: new Array(), 
    }
    const result = [];

    const flights = $('.flight-result > .tbody').find('.no-of-flights').toArray();

    flights.forEach(function(flight, _id) {

        result[_id] = Object.assign({},format);
        const flightCode = $(flight).find('p.font-reg.redcolor').contents().filter(function(){
            return this.type === 'text';
        }).text().trim();
        const times = $(flight).find('p.font-reg.redcolor').find('small').html().match(/\d\d:\d\d [AP]M/g);
        const flightClassContainer = $(flight).find('.flightclasscontainer').toArray();

        flightClassContainer.forEach((flightClass, __id) => {
            result[_id].klasses[__id]   = {

                flightCode:$(flight).find('p.font-reg.redcolor').contents().filter(function () {
                    return this.type === 'text';
                }).text().trim(),
            departure: times[0],
            arrival: times[1],
            fareCode: $(flightClass).find('.class').text(),
            fare: $(flightClass).find('.price').text(),
            baggage: '20'
             }
        })
    });

    let items = [].concat(...result.map(o => o.klasses));
   // console.log(items);
    return items;

}

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Может быть, вы можете сделать следующее с массивом map():

var data = [{"klasses":[{"flightCode":"SHA735","departure":"03:50 PM","arrival":"04:15 PM","fareCode":"T Class","fare":"4,000","baggage":"0"},{"flightCode":"SHA735","departure":"03:50 PM","arrival":"04:15 PM","fareCode":"S Class","fare":"5,000","baggage":"0"},{"flightCode":"SHA735","departure":"03:50 PM","arrival":"04:15 PM","fareCode":"E Class","fare":"5,300","baggage":"0"}]}]

data = data[0].klasses.map(function(d){
    d.departure = d.departure.split(' ')[0];
    d.arrival = d.arrival.split(' ')[0];
    d.fare = d.fare.replace(',', '');
    return d;
});
console.log(data)
0 голосов
/ 25 апреля 2018

Вы можете воспользоваться помощью этого кода.Используйте методы, такие как split и replace, чтобы получить это:

var jsonData = [{"klasses":[{"flightCode":"SHA735","departure":"03:50 PM","arrival":"04:15 PM","fareCode":"T Class","fare":"4,000","baggage":"0"},{"flightCode":"SHA735","departure":"03:50 PM","arrival":"04:15 PM","fareCode":"S Class","fare":"5,000","baggage":"0"},{"flightCode":"SHA735","departure":"03:50 PM","arrival":"04:15 PM","fareCode":"E Class","fare":"5,300","baggage":"0"}]}];

jsonData[0].klasses.forEach((klass)=>{
  klass.departure = klass.departure.split(' ')[0];
  klass.arrival = klass.departure.split(' ')[0];
  klass.fare = klass.fare.replace(',','');
});

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