我有三个输入字段和一个按钮。只能在字段中输入数字和逗号。结果必须是在所有三个字段中恰好出现两次的数字。例如。
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/