javascript - 过滤输入字段中的数据。 Javascript数组比较?

标签 javascript html arrays

我有三个输入字段和一个按钮。只能在字段中输入数字和逗号。结果必须是在所有三个字段中恰好出现两次的数字。例如。

num_array1 = [1,2,3];
num_array2 = [1,2,3,4];
num_array3 = [1,5,6];

根据这个例子,结果应该是:2,3 真正的麻烦是数字“1”,因为所有数组都有它。使用简单的嵌入式 for 循环我无法做到这一点,所以我希望你可以:)我期待任何替代解决方案。

我的一些代码:

<body>

  <form name="numbers" method="post">
    <input type="text" id="number_1">
    <input type="text" id="number_2">
    <input type="text" id="number_3">
    <button id="evaluate" onclick="myFunction()">Calculate</button>
  </form>
  <p id="error"></p>
  <p id="result"></p>

</body>

<script>
  var number1 = document.getElementById("number_1").value.replace(/[^\d,.]/g, '');
  var number2 = document.getElementById("number_2").value.replace(/[^\d,.]/g, '');
  var number3 = document.getElementById("number_3").value.replace(/[^\d,.]/g, '');

  var error = document.getElementById("error").innerHTML;
  var result = document.getElementById("result").innerHTML;

  function myFunction() {
    if (isNaN(number1) || isNaN(number2) || isNaN(number3)) {
      error = "Not legal character";
    } else {}
  }
</script>

最佳答案

这是解决方案。首先,您必须使用 .split() 方法将 string 转换为 array

var number1 = document.getElementById("number_1").value.replace(/[^\d,.]/g, '').split(',');
//number1=[1,2,3]

然后,您必须使用 .concat() 方法连接所有 3 个数组,并仅找到恰好出现两次的数字

concatArray=number1.concat(number2,number3);
//concatArray=[1,2,3,1,2,3,4,1,5,6];

下一步是使用 filter() 函数查找指定元素出现次数

如果这个数字是2并且元素不存在于最终的数组中,那么我们将把它添加到final 数组,名为 arr

要查找array中是否存在element,我们应该使用indexOf()方法。

var error = document.getElementById("error").innerHTML;
  var result = document.getElementById("result").innerHTML;
  var arr=[];
  function myFunction() {
      var number1 = document.getElementById("number_1").value.replace(/[^\d,.]/g, '').split(',');
  var number2 = document.getElementById("number_2").value.replace(/[^\d,.]/g, '').split(',');
  var number3 = document.getElementById("number_3").value.replace(/[^\d,.]/g, '').split(','); 
      var concatArray=number1.concat(number2,number3);
    console.log(concatArray);
      for(i=0;i<concatArray.length;i++){
          var length=concatArray.filter(function(item){
              return item==concatArray[i];
          }).length;
          if(length==2 && arr.indexOf(concatArray[i])==-1){
             arr.push(concatArray[i]);
          }
      }
    console.log(arr);
  
  }
<body>

  <form name="numbers" method="post">
    <input type="text" id="number_1">
    <input type="text" id="number_2">
    <input type="text" id="number_3">
    <button id="evaluate" onclick="myFunction()">Calculate</button>
  </form>
  <p id="error"></p>
  <p id="result"></p>

关于javascript - 过滤输入字段中的数据。 Javascript数组比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42094696/

相关文章:

javascript - 如何仅使用 Javascript OpenGraph API 2.7 获取 URL 的 facebook 分享数量。以及使用什么访问 token

html - Windows 10 邮件和图像尺寸

java - 检查句子是否包含某些单词

javascript - 将数组从 python 传输到 javascript

javascript - 如果 URL 包含 VALUE 添加类以链接 + ROOT

javascript - 如何使用 JavaScript 和 HTML 实现指向现有按钮的 URL 链接?

javascript - Css 动画 - 停止和恢复动画

html - 符号在 mozilla 中显示不正确

javascript - 通过 Python 将 SQL 查询返回到 JavaScript?

java - 你如何从java中相同索引的三个并行数组中删除一个元素?