摆脱数组中输出对象之间的逗号

时间:2018-10-24 13:18:51

标签: javascript arrays json

这是我的代码,用于输出与国家公园有关的警报。一切都很好,除非我在对象之间插入了逗号,而且我不知道如何解决它。 这是我用于输出国家公园和警报的代码:

const alertEndpoint = ('https://api.nps.gov/api/v1/alerts?limit=400&api_key=' + apikey);
const parkEndpoint = ('https://api.nps.gov/api/v1/parks?limit=500&api_key=' + apikey);

getParkData();

async function getParkData() {


const [parkAlerts, parkInfo] = await Promise.all([fetch(alertEndpoint), fetch(parkEndpoint)]);

const alertResults = await parkAlerts.json();
const parkResults=  await parkInfo.json();

const alertsData = alertResults.data;
const parkData = parkResults.data;

alertsFilter(alertsData, parkData);

}

  function alertsFilter(alertsData, parkData) {

const filteredAlerts = alertsData.filter(function (onlyAlerts) {
    return onlyAlerts.category.toLowerCase() === "park closure" || 
 onlyAlerts.category.toLowerCase() === "caution";


});
parksFilter(parkData, filteredAlerts);



 }

 function parksFilter(parkData, filteredAlerts) {
const filteredParks = parkData.filter(function (onlyNatParks) {
    return onlyNatParks.designation.toLowerCase().includes( "national park");

});
joinParksToAlerts(filteredParks, filteredAlerts);
 }

 function joinParksToAlerts(filteredParks, filteredAlerts) {

const parksJoinedWithAlerts = filteredParks.map(park => {
    park.alerts = filteredAlerts.filter(alert => alert.parkCode === 
 park.parkCode);
    return park}).map(park =>{
    park.alerts = park.alerts.map(alert => alert.description).join(' 
 <br> - ');
    return park

});

 displayAlerts(parksJoinedWithAlerts);

 function joinParksToAlerts(filteredParks, filteredAlerts) {

    const parksJoinedWithAlerts = filteredParks.map(park => {
        park.alerts = filteredAlerts.filter(alert => alert.parkCode ===
            park.parkCode);
        return park
    }).map(park => {
            park.alerts = park.alerts.map(alert => alert.description).join('  <
                br > -');
                return park

            });

        displayAlerts(parksJoinedWithAlerts); console.log(parksJoinedWithAlerts);

    }

    function displayAlerts(parksJoinedWithAlerts) {

        const natParkDiv = document.querySelector('.nationalparks');
        console.table(parksJoinedWithAlerts);



        const displayEverything = parksJoinedWithAlerts.map(parkAndAlerts => {
            const parkName = parkAndAlerts.fullName;
            const stateName = parkAndAlerts.states;
            const alerts = parkAndAlerts.alerts;
            return `
       <div class="col-lg-12">
        <span class="park">${parkName}, ${stateName}<br></span>
        <span class="alerts">${alerts}</span>
    </div>
    `

        });
        console.log(displayEverything);

        natParkDiv.innerHTML = displayEverything;
    }

这是输出:

缅因州阿卡迪亚国家公园

10月23日至24日上午6:30至下午4点之间,沿约旦池塘西侧的10号和14号交叉路口之间的马路将关闭,以更换涵洞。

犹他州拱门国家公园

SD荒地国家公园

10月10日至11日上午10点至下午2点,本赖菲尔游客中心将关闭电源。游客中心仍可获取信息。洗手间,展览品,电影和书店将不可用。锡达山口小屋提供洗手间。

德克萨斯州大弯国家公园

由于熊活动的增加,失落矿山步道区域将于2018年10月12日起关闭。小径,步道,停车区和大山峰朝北的山坡将关闭,直至另行通知。所有其他路径此时仍保持开放。

1 个答案:

答案 0 :(得分:1)

park.alerts等是数组。您通过将它们隐式转换为字符串来输出它们,该字符串将不带任何参数调用join,默认情况下会使用逗号将数组连接起来。为避免这种情况发生,请使用空字符串调用join

return `
   <div class="col-lg-12">
    <span class="park">${parkName}, ${stateName}<br></span>
    <span class="alerts">${alerts.join()}</span>
</div>
`;

请注意alerts上的更改。


旁注:在几个地方,您将对象(例如,description中的文本)直接用作HTML。这是不安全的,并且从格式化的角度来看也是有问题的。在HTML中嵌入任意未知文本时,至少需要将<更改为&lt;,将&更改为&amp;