我有一个代码示例,该代码按顺序返回数组中的每个值。我用过forEach()。有什么方法可以返回自定义数组中的值。

我做了一些函数,用于将text-area值拆分为所有textarea并使用文本字符串进行查询。我能够成功。但是有些问题。下面的例子。


输入Filed1字符串,例如:
   GFSD 65897542
然后单击拆分按钮。输出:将所有值分配到扩孔文本区域。
将GF值输入到输入字符字段。输出:6589
我的问题是,当我输入GF这样的值时,输出6589。而当FG输入同样的值时,输出6589而不是8965。如果有解决方案,请帮我。我希望角色严格遵守数字。


代码示例:

$('#output1').focus(()=>{
    var a=document.querySelectorAll('textarea');
    var str = $('#ccMain').val();
    var first = str[0];
    var second = str[1];
    console.log(first," ", second)
    var str='';
    a.forEach(e=>e.value.includes(first)||e.value.includes(second)?str+=e.value.substr(1,e.value.length):false)
        $('#output1').val(str);
    })




 function splitText() {
      var textAreas = [];
      //Put all of the textareas into an array for easy access
      for(let i = 1; i <= 4; i++) {
      textAreas.push(document.getElementById(`value${i}`));
      }
      //Read the text from text1 and split it at a new line
      var text = textAreas[0].value;
      var [line1, line2] = text.split(/\r?\n/)
      for(let i = 0; i < 4; i++) {
      var combinedText = line1.substring(i, i+1) + line2.substring(i*2, (i+1)*2)
      textAreas[i].value = combinedText;
      }
      }
      $('#output').focus(()=>{
      var a=document.querySelectorAll('textarea');
      var str = $('#ccMain').val();
      var first = str[0];
      var second = str[1];
      console.log(first," ", second)
      var str='';
      a.forEach(e=>e.value.includes(first)||e.value.includes(second)?str+=e.value.substr(1,e.value.length):false)
      $('#output').val(str);
      })

<html>
   <head>
      <title>Test Demo</title>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
   </head>
   <body>
      <label>Filed1 </label>
      <textarea id="value1"></textarea>

      <label>Filed2:</label>
      <textarea id="value2"></textarea>

      <label>Filed3:</label>
      <textarea id="value3"></textarea>

      <label>Filed4:</label>
      <textarea id="value4"></textarea>

      <button onclick="splitText()">Split!</button>
      <br>
      <label>Input Character:</label>
      <br>

      <input type="text" id="ccMain"  >

      <textarea id="output"></textarea>

   </body>
   </html>

最佳答案

我将使用map将字母和数字之间的对应关系放入

$('#output').focus(()=>{
    var textareas = document.querySelectorAll('textarea');
    var map = new Map(Array.from(textareas, area => [area.value[0], area.value.slice(1)]));
    var str = Array.from($('#ccMain').val(), c => map.get(c)).join``;
    $('#output').val(str);
});




function splitText() {
    //Put all of the textareas into an array for easy access
    var textAreas = [];
    for(let i = 1; i <= 4; i++) {
        textAreas.push(document.getElementById(`value${i}`));
    }
    //Read the text from text1 and split it at a new line
    var text = textAreas[0].value;
    var [line1, line2] = text.split(/\r?\n/);
    for (let i = 0; i < 4; i++) {
        var combinedText = line1.substring(i, i+1) + line2.substring(i*2, (i+1)*2)
        textAreas[i].value = combinedText;
    }
}

$('#output').focus(()=>{
    var textareas = document.querySelectorAll('textarea');
    var map = new Map(Array.from(textareas, area => [area.value[0], area.value.slice(1)]));
    var str = Array.from($('#ccMain').val(), c => map.get(c)).join``;
    $('#output').val(str);
});

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <label>Filed1 </label>
  <textarea id="value1"></textarea>

  <label>Filed2:</label>
  <textarea id="value2"></textarea>

  <label>Filed3:</label>
  <textarea id="value3"></textarea>

  <label>Filed4:</label>
  <textarea id="value4"></textarea>

  <button onclick="splitText()">Split!</button>
  <br>
  <label>Input Character:</label>
  <br>

  <input type="text" id="ccMain"  >

  <textarea id="output"></textarea>
 

09-29 23:17