检查输入是否是相同的值(多个条件)javascript数组

问题描述 投票:0回答:2

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

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>
javascript html arrays search
2个回答
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>

我不是在考虑用户是否放了一个匹配多个值的-,但它很好,例如,你可以轻松地排除它。


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>
© www.soinside.com 2019 - 2024. All rights reserved.