【发布时间】:2016-10-19 20:27:17
【问题描述】:
我正在做一个项目,我需要读取不同格式的数字,并根据用户输入检查这些数字。在某些情况下,这将是一个类似“8800-9000”的区间,在某些情况下,它将是一个 4 位数字,在某些情况下是一个 5 位数字。
数组如下所示:
var testArray = [
{
"label": "Nordea",
"value": ["1100-1199", "1400-2099", "3000-3399", "3410-4999"]
},
{
"label": "Swedbank",
"value": ["7000-7120", "7123-8104", "8106-8999"]
},
{
"label": "Sparbanken Nord",
"value": "8264"
},
{
"label": "Sparbanken i Enköping",
"value": ["7121-7122", "8305-5"]
}];
我已经制作了一个巨大的嵌套 if-messs,效果还不错。我唯一的问题是它在找到匹配项时不会中断。如果我输入“8305-5”,它将在 2 个不同的对象属性数组中找到匹配项。我设计的“between”功能错了吗?
我还可以搜索比间隔大得多的数字并且仍然得到匹配。间隔“3410 - 3999”在一个数组中,如果我搜索“39999”,它仍然会得到匹配。
非常感谢所有帮助!
我遍历数组中的所有对象,如果 value-property 是一个数组,我将检查每个元素的长度,看看我应该匹配“between”-value 还是直接匹配“===” .
如果它不是一个数组,我尝试一个简单的匹配。
function searchForClearing() {
var userInput = document.getElementById("clearingnummerTextBox").value;
for (var i in testArray) {
var currentObject = testArray[i];
if (Array.isArray(currentObject.value)) {
for (i = 0; i < currentObject.value.length; i++) {
if (currentObject.value[i].length === 9) {
var firstInterval = currentObject.value[i].split('-')[0];
var lastInterval = currentObject.value[i].split('-')[1];
if (userInput >= firstInterval && userInput <= lastInterval) {
console.log("Inmatat: " + userInput + " " + "Träff på: " + currentObject.value);
document.getElementById("bankResult").innerHTML = currentObject.label;
console.log("Sökte mellan intervallen: " + firstInterval + " - " + lastInterval);
console.log("9 teckens sök");
}
} else if (currentObject.value[i].length === 6) {
if (userInput == currentObject.value[i]) {
console.log("Inmatat: " + userInput + " " + "Träff på: " + currentObject.value);
document.getElementById("bankResult").innerHTML = currentObject.label;
console.log("Sökte mellan intervallen: " + firstInterval + " - " + lastInterval);
console.log("6 teckens sök");
}
}
}
} else {
if (currentObject.value.length === 9) {
var firstInterval = currentObject.value.split('-')[0];
var lastInterval = currentObject.value.split('-')[1];
if (userInput >= firstInterval && userInput <= lastInterval) {
console.log("Inmatat: " + userInput + " " + "Träff på: " + currentObject.label);
document.getElementById("bankResult").innerHTML = currentObject.label;
console.log("Sökte mellan intervallen: " + firstInterval + " - " + lastInterval);
return true;
}
} else if (currentObject.value.length === 4) {
if (userInput == currentObject.value) {
console.log("Träff på clearingnummer som inte var i en array: " + userInput + " " + currentObject.label);
document.getElementById("bankResult").innerHTML = currentObject.label;
return true;
}
}
}
}
}
【问题讨论】:
标签: javascript arrays loops