【问题标题】:How do I turn a repetitive string into a function?如何将重复的字符串变成函数?
【发布时间】:2017-12-03 22:40:02
【问题描述】:

目前我正在从 API 获取信息 - 我想以更用户友好的方式将该信息转换到我的网站上。这里的问题是我正在寻找的变量的数量随着其中的答案而不断变化,所以我正在寻找一个函数,如果有另一个“车辆”,它将添加一个带逗号的段落 -可能是我没有解释清楚,所以我举个例子。

目前我有这样的:

document.getElementById("vehicle").innerHTML = data.vehicles[1]['classname']
document.getElementById("vehicle").innerHTML = data.vehicles[2]['classname']
document.getElementById("vehicle").innerHTML = data.vehicles[3]['classname']

我不想写一百万次,而是想创建一个函数,每次在 api 中看到上述元素时,添加到我的代码中。

例如我会有

<p id="vehicle">...</p>

在我的 HTML 中,如果我的 api 中有 1 辆车的类名为 Car,它会将 ... 替换为 Car。如果有 2 辆车,一辆的班级名称为 Car,另一辆为 Boat,它将用 Car, Boat 替换 ... - 希望这是有道理的

【问题讨论】:

    标签: javascript html json api


    【解决方案1】:
    content = data.vehicles.map(v => v.classname).join(", ");
    document.getElementById("vehicle").textContent = content;
    

    附录

    1. data.vehicles.map(v =&gt; v.classname)
      遍历data.vehicles 数组并仅采用类名。

      例如,如果我们有[{classname: "Car"}, {classname: "Boat"}],那么我们将返回["Car", "Boat"]

    2. .join(", ")
      通过", " 加入元素。

      例如,如果我们有["Car", "Boat"],那么我们将返回"Car, Boat"

    3. document.getElementById("vehicle").textContent
      .textContent 是设置元素文本内容的正确方法。

    【讨论】:

    • 谢谢!你能解释一下这里发生了什么吗?希望我没有要求太多
    • @AntArni 添加了一些解释。
    • 使用您的代码,我尝试了一些即兴创作并将某些结果替换为更易读的结果 - 例如,通常结果是“B_Quadbike_02”或类似的东西。每次想到它时,我都会尝试将其替换为“ Quadbike”。我写了一些代码,但它不起作用,也许你可以帮忙: var vehicleList = data.vehicles.map(v => v.classname); var vehicleListName = vehicleList.replace(/B_Quadbike_01/, 'Quadbike');内容 = 车辆列表.join(", "); document.getElementById("vehicle").textContent = content;
    • @AntArni vehicleList 是一个数组而不是字符串,你不能在上面使用.replace。但是,您可以将其映射到整个数组:data.vehicles.map(v =&gt; v.classname).map(v =&gt; v.replace(/.+_(.+?)_.+/, "$1")).join(", ")
    猜你喜欢
    • 2015-10-25
    • 1970-01-01
    • 2019-07-18
    • 2017-06-29
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    相关资源
    最近更新 更多