首页 > 解决方案 > 检查输入是否相同(多个条件)javascript数组

问题描述

我需要搜索每个标签的值,如果用户输入与值的任何数字相同,则任何数字都与用户输入匹配,它显示标签,下面的代码用于显示结果,如果输入匹配两个数字之间的范围,我不想

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>

标签: javascripthtmlarrayssearch

解决方案


如果我正确理解了您的问题,那么这应该是您正在寻找的内容:

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>


推荐阅读