【问题标题】:How to convert file contents into strings?如何将文件内容转换为字符串?
【发布时间】:2021-11-12 22:24:54
【问题描述】:

我有一个如下所示的 txt 文件:

1||fun||ball
2||job||hammer
3||run||feet

我想将其加载到我的代码中并将其转换为:

<dt>1</dt><dd>fun <img src="ball.png"></dd>
<dt>2</dt><dd>job <img src="hamm.png"></dd>
<dt>3</dt><dd>run <img src="feet.png"></dd>

我试过这样:

const openrooms = `1||fun||ball
     2||job||hamm
     3||run||feet`;

const roomlist = openrooms.split('\n');

for (var rooms in roomlist) {
  room = roomlist[rooms].split('||');
  for (var {roomid, name, icon} in room) {
    result = `<dt>${room[roomid]}</dt><dd>${room[name]} <img src="${room[icon]}"></dd>`;
  }
}
document.getElementById("destination").innerHTML = result;
&lt;div id="destination"&gt;&lt;/div&gt;

我得到的都是未定义的。这是为什么?请尝试以下小提琴:

https://jsfiddle.net/db6hy8a0/

【问题讨论】:

  • 您应该使用 for..of 循环而不是 for..in 与数组。
  • 将 {roomid, name, icon} 更改为 [roomid, name, icon]
  • 也尝试了of,但结果相同。
  • @CainNuke 你的循环很好。问题在于解构。
  • 每次都覆盖result。

标签: javascript for-loop


【解决方案1】:

试试:

const openrooms = `1||fun||ball
     2||job||hamm
     3||run||feet`;

const roomlist = openrooms.split('\n');

const result = roomlist.map(e => {
  var split = e.split('||')
  return `<dt>${split[0]}</dt><dd>${split[1]} <img src="${split[2]}.png"></dd>`
}).join('')

document.getElementById("destination").innerHTML = result;
&lt;div id="destination"&gt;&lt;/div&gt;

【讨论】:

    【解决方案2】:

    第二个循环尝试从第二个split 解构字符串。

    尝试更接近:

    const openRooms = `1||fun||ball
    2||job||hammer
    3||run||feet`
     
    const rooms = openRooms.split('\n')
    
    result = ""
    rooms.forEach(room => {
      const [id, name, icon] = room.split('||')
      result += `${id} room: ${name} - ${icon}\n`
    })
    
    console.log(result)

    (尽管为什么不首先将它们存储在一个对象中?)

    【讨论】:

      【解决方案3】:
      const openrooms = `1||fun||ball
       2||job||hamm
       3||run||feet`;
      
      
      const result = openrooms.split("\n").map((row)=>{
      const items = row.split("||");
      return `<dt>${items[0]}</dt><dd>${items[1]} <img src="${items[2]}.png"></dd>`})
      
      
      document.getElementById("destination").innerHTML = result;
      

      【讨论】:

      • 最好(尝试)解释一下这与当前投票率最高的答案有何不同。 AFAICT 它只是消除了一个临时变量。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2013-06-23
      相关资源
      最近更新 更多