简体   繁体   English

去掉数组中输出对象之间的逗号

[英]Get rid of comma between outputting objects in an array

Here is my code for outputting alerts as they pertain to national parks.这是我用于输出与国家公园有关的警报的代码。 Everything is fine except I am getting a comma in between the objects, and I don't know how to fix it.一切都很好,只是我在对象之间有一个逗号,我不知道如何解决它。 Here is my code for outputting the national parks and alerts:这是我输出国家公园和警报的代码:

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;
    }

and here is the output:这是输出:

Acadia National Park, ME阿卡迪亚国家公园,我

Carriage Road access between intersections 10 and 14, along the west side of Jordan Pond, will be closed 6:30 am to 4 pm Oct 23-24 for culvert replacement. 10 月 23 日至 24 日上午 6 点 30 分至下午 4 点,位于佐敦池塘西侧的 10 号和 14 号交叉口之间的 Carriage Road 通道将关闭以更换涵洞。

, ,

Arches National Park, UT犹他州拱门国家公园

, ,

Badlands National Park, SD荒地国家公园,SD

The Ben Reifel Visitor Center will be without power from 10am to 2pm October 10 & 11. Information may still be obtained at the visitor center. Ben Reifel 游客中心将于 10 月 10 日和 11 日上午 10 点至下午 2 点停电。仍可在游客中心获取信息。 Restrooms, exhibits, movie and bookstore will not be available.洗手间、展览、电影和书店将不可用。 Restrooms available at the Cedar Pass Lodge. Cedar Pass Lodge 提供洗手间。

, ,

Big Bend National Park, TX德克萨斯州大弯国家公园

Due to increased bear activity the Lost Mine Trail area will be closed as of October 12, 2018. The trail, trailhead, parking area, and north facing slope of Casa Grande Peak will be closed until further notice.由于熊活动增加,Lost Mine Trail 地区将于 2018 年 10 月 12 日关闭。 Casa Grande Peak 的小道、小道起点、停车场和北向斜坡将关闭,直至另行通知。 All other trails remain open at this time.所有其他步道此时仍保持开放。

, ,

park.alerts and such are arrays . park.alerts等是数组 You're outputting them by implicitly converting them to string, which calls join with no arguments, which defaults to joining the array with commas.您通过将它们隐式转换为字符串来输出它们,该字符串调用不带参数的join ,默认使用逗号连接数组。 To make that not happen, call join with an empty string:为了避免这种情况发生,请使用空字符串调用join

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

Note the change on alerts .注意alerts的变化。


Side note: In a couple of places you're using text from the objects (from description , for instance) directly as HTML.旁注:在一些地方,您将对象中的文本(例如,来自description )直接用作 HTML。 That's insecure, and also problematic from a formatting perspective.这是不安全的,从格式的角度来看也是有问题的。 You need to at least change < to &lt;您至少需要将<更改为&lt; and & to &amp;&&amp; when embedding arbitrary unknown text in HTML.在 HTML 中嵌入任意未知文本时。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM