Проверьте, является ли ввод одинаковым значением (несколько условий) массива JavaScript - PullRequest
0 голосов
/ 04 сентября 2018

Мне нужно искать значение каждой метки, чтобы любое число совпадало с пользовательским вводом если пользовательский ввод совпадает с любым числом значения, он показывает метку, код ниже предназначен для отображения результата, если ввод соответствует диапазону между двумя числами, которые мне не нужны

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>

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Это использует 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 голосов
/ 04 сентября 2018

Если я правильно понял ваш вопрос, это должно быть то, что вы ищете:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...