【问题标题】:Split list from textarea into chunks and add extra text using javascript将文本区域中的列表拆分为块并使用 javascript 添加额外的文本
【发布时间】:2022-12-31 08:46:55
【问题描述】:

我有一个这样的列表:125,248,11,486,3554,89,55

我需要有 2 个文本区域,在第一个中我需要放置上面的列表,然后在我单击一个按钮之后在第二个文本区域中我将得到一个这样的列表:

<!--startline-->[new text="table" ids="125,248,11"]
<!--startline-->[new text="table" files="2" ids="486,3554,89,55"]

所以这些是规则:

  • 我需要 3 个元素的块大小
  • 我需要在块前后添加自定义文本:&lt;!--startline--&gt;[new text="table" ids=" + chunk + "]
  • 如果最后一个块有 2 个或 1 个元素,那么我需要将它与 前一个和为该块生成的文本将是: &lt;!--startline--&gt;[new text="table" files="2" ids=" + chunk + "]
  • 每个自定义文本和块都将换行,如上例所示

我找到了一些可以帮助的东西,使用.slice.splice但问题是我需要添加自定义文本而不是像这里这样制作数组:https://stackoverflow.com/a/47061736/1773862

那么,有什么想法吗? :)

// JavaScript code to generate
    function generateList() {
        var x = document.getElementById('mylist');
       //....
    }
<textarea id="mylist">125,248,11,486,3554,89,55</textarea>
<br><br>
<button onclick="generateList()">Generate new list</button>
<br><br>
<textarea id="mynewlist"></textarea>

【问题讨论】:

  • 请访问help center,带上tour看什么和How to Ask。做一些研究,搜索有关 SO 的相关主题;如果您遇到困难,请发布您尝试的minimal reproducible example,注明输入和预期输出,最好是Stacksnippet
  • 你有一个描述和一个 sn-p 但没有努力
  • @mplungjan,好吧,我猜你没有看到我试图找到解决方案,但是嘿,谢谢!
  • 我看到了,但没有留下深刻印象 ;) 一次做一件你知道怎么做的事,一次问一个问题
  • @mplungjan 我不是来打动你的,这不是比赛。我只是寻求帮助,而不是做我的工作;)非常感谢。祝你今天过得愉快!

标签: javascript split


【解决方案1】:

第1部分:

const myList = document.getElementById('mylist');
const chunkSize = 3;
document.getElementById('generate').addEventListener('click', () => {
  // https://stackoverflow.com/questions/8495687/split-array-into-chunks
  let chunks = myList.value.trim().split(',').reduce((all, one, i) => {
    const ch = Math.floor(i / chunkSize);
    all[ch] = [].concat((all[ch] || []), one);
    return all
  }, []);
  let lastChunk = [...chunks[chunks.length-1]]; 
  if (lastChunk.length < chunkSize) {
    chunks = chunks.slice(0, -1);
    chunks[chunks.length - 1] = chunks[chunks.length - 1].concat(lastChunk)
  }
});
<textarea id="mylist">125,248,11,486,3554,89,55</textarea>
<br><br>
<button id="generate">Generate new list</button>
<br><br>
<textarea id="mynewlist"></textarea>

【讨论】:

    【解决方案2】:

    您可以使用 javascript split 函数在逗号“,”上拆分字符串,这将为您提供一个值数组。之后,执行使用 3 个值、在其他值之前添加文本等的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      相关资源
      最近更新 更多