在Javascript中删除父数组

问题描述 投票:0回答:5

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

我的结果以这种方式返回。

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

我的代码如下:

const cheerio = require('cheerio');

export default function parseHtml(html) {

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: '0'
             }
        })
    });
    console.log(JSON.stringify(result));
return result;

}
javascript arrays
5个回答
0
投票

如果你的数组有多个元素,一个选项是使用concatmap

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


let result = [].concat(...arr.map(o => o.klasses));

console.log(result);

0
投票

使用forEach和扩展运算符...来获得所需的输出。

var arr = [{
  "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"
  }]
}]
var res = [];
arr.forEach((obj)=>{
  res.push(...obj.klasses);
});

console.log(res);

0
投票

如果您只需要jsonArray中的每个对象,则可以通过其索引访问它。您只需要一个for循环来迭代每个对象。我觉得你在找这样的东西。创建一个新的空数组并将每个对象推送到它。

newArry=[]
for(var i=0; i<flights.length; i++;){
    singleObject = flights[i];
    newArr.push(singleObject);
}
console.log(newArr);

0
投票
var jsonOriginal = { hw: { hello: 'world' } };
var jsonModified = jsonOriginal.hw;

那将是

jsonModified = { hello: 'world' };

然后可以在循环中运行。


0
投票
var arr=[{"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"}]}]


console.log(arr[0].klasses) 
© www.soinside.com 2019 - 2024. All rights reserved.