javascript - 在 JS 中格式化数据,删除 AM/PM 信息和金额中的逗号

标签 javascript web-scraping cheerio

我必须仅以这种格式返回数组。如何实现这一目标。提前致谢。

我的结果就是这样返回的。

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

但我只需要排除上午/下午信息和票价金额之间的逗号。

[{"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;

}

最佳答案

也许您可以使用数组的 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)

关于javascript - 在 JS 中格式化数据,删除 AM/PM 信息和金额中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019243/

相关文章:

reactjs - Enzyme,如何通过属性找到wrapper的 child ?

javascript - 如何在 Cheerio 或 jquery 中包装多个元素的预定义父级?

javascript - Cheerio:需要将 $ 与元素一起传递吗?

Javascript:Math.random

javascript - jQuery 似乎同时运行多个调用

python - 尝试提取 URL 时使用 Urllibopener 时引发 HTTP 错误

python - 无法使用 post 请求获取某些项目

javascript - 您可以选择流向下一行的类的所有 div 吗?

php - 使用 ajax 或普通表单操作进行有/无 Javascript 表单提交

Javascript 函数不返回更新的对象