首页 > 解决方案 > 返回自定义数组值

问题描述

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

我为所有文本区域的拆分text-area值和使用文本字符串的查询做了一些功能。我能够成功。但有些问题。下面的例子。

  1. 键入Filed1字符串,如:
    GFSD
    65897542

  2. 然后单击拆分按钮。输出:部分值到扩孔文本区域。

  3. GF值放入Input Character Filed。输出:6589

  4. 我的问题是当我输入像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>

标签: javascriptjquery

解决方案


我会用 amap来表示字母和数字之间的对应关系

$('#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>
 


推荐阅读