我需要搜索每个标签的值,以查找与用户输入匹配的任何数字 如果用户输入的值与任何数字相同,则显示标签,下面的代码用于显示输入是否与两个我不希望的数字之间的范围匹配的结果
var testArray = [{
"label": "Nordea",
"value": ["77038-3532 - 19428 - 18073 - 08028 - 07058 - 07936 - 77038 - 3532 "]
}, {
"label": "Swedbank",
"value": ["77038-3532 - 19428 - 18073 - 08028 - 07058 - 07936 - 77038 - 3532 "]
}, {
"label": "Sparbanken Nord",
"value": "8264"
}, {
"label": "Sparbanken i Enköping",
"value": ["7121-7122", "8305-5"]
}];
function findTestObject(input) {
return testArray.find(function (testObj) {
var value = testObj.value;
if (Array.isArray(value)) {
return value.some(function (range) {
var rangeData = range.split('-');
return parseInt(rangeData[0]) <= input && input <= parseInt(rangeData[1]);
});
} else {
return value === input;
}
});
}
function test() {
var userInput = document.getElementById("input").value;
var result = findTestObject(userInput);
var label = result ? result.label : 'Not Found';
document.getElementById("result").innerHTML = label;
}
<input id="input" placeholder="Enter something..."/>
<button onclick="test()">Test</button>
<br />
Result: <div id="result"></div>
答案 0 :(得分:0)
如果我正确理解了您的问题,这应该是您要寻找的内容:
var testArray = [{
"label": "Nordea",
"value": ["77038-3532 - 19428 - 18073 - 08028 - 07058 - 07936 - 77038 - 3532 "]
}, {
"label": "Swedbank",
"value": ["77038-3532 - 19428 - 18073 - 08028 - 07058 - 07936 - 77038 - 3532 "]
}, {
"label": "Sparbanken Nord",
"value": "8264"
}, {
"label": "Sparbanken i Enköping",
"value": ["7121-7122", "8305-5"]
}];
function findTestObject(input) {
return testArray.find(function (testObj) {
var value = testObj.value;
if (Array.isArray(value)) {
return value.some(function (range) {
return parseInt(range === input);
});
} else {
return value === input;
}
});
}
function test() {
var userInput = document.getElementById("input").value;
var result = findTestObject(userInput);
var label = result ? result.label : 'Not Found';
document.getElementById("result").innerHTML = label;
}
<input id="input" placeholder="Enter something..."/>
<button onclick="test()">Test</button>
<br />
Result: <div id="result"></div>
答案 1 :(得分:0)
这正在使用match
,因为我认为处理存储在值中的不同类型的数据更容易。
function findTestObject(input) {
var testArray = [{
"label": "Nordea",
"value": ["77038-3532 - 19428 - 18073 - 08028 - 07058 - 07936 - 77038 - 3532 "]
},
{
"label": "Sparbanken Nord",
"value": "8264"
}, {
"label": "Sparbanken i Enköping",
"value": ["7121-7122", "8305-5"]
}];
var r = new RegExp(input, "gi");
var result = [];
testArray.forEach(e=>{
if (e.value.toString().match(r)) {
result.push(e.label);
}
})
return result;
}
function test() {
var userInput = document.getElementById("input").value;
var result = findTestObject(userInput);
document.getElementById("result").innerHTML = (result.join(" ") || "Not Found");
}
<input id="input" placeholder="Enter something..." />
<button onclick="test()">Test</button>
<br /> Result:
<div id="result"></div>
我不考虑用户是否放置了一个-
,它匹配多个值,但这很好,例如,您可以轻松地排除它。