Как выполнить условное сопоставление на основе регулярного выражения в Javascript? - PullRequest
0 голосов
/ 12 марта 2020

У меня есть карта, и я хочу, чтобы каждый раз, когда я нажимал на свойство объекта, он делал некоторые вещи. Однако, условие состоит в том, что область, по которой я щелкаю, должна соответствовать части имени свойств объекта переменной JS.

На практике мы имеем:

Функция

ProcessiJSON.forEach(function(arrayItem) {
    if (e.target.feature.properties.NOME_COM.toUpperCase().match(/BONDENO/)) {

            $('.lead').html('ciaoooooo' + arrayItem.ANNO_DI_AVVIO);

}
}

Переменная

    var ProcessiJSON =
[
    {
      "": 0,
      "ANNO_DI_AVVIO": 2010,
      "PROCESSI_BONDENO": "5",
      "PROCESSI_CAMPOSANTO": "",
      "PROCESSI_CAVEZZO": "",
      "PROCESSI_CENTO": "",
      "PROCESSI_CONCORDIA_SULLA_SECCHIA": "",
      "PROCESSI_CREVALCORE": "",
      "PROCESSI_FINALE_EMILIA": "",
      "PROCESSI_MEDOLLA": "",
      "PROCESSI_MIRABELLO": "",
      "PROCESSI_MIRANDOLA": "",
      "PROCESSI_NOVI_DI_MODENA": "",
      "PROCESSI_PIEVE_DI_CENTO": 1,
      "PROCESSI_REGGIOLO": "",
      "PROCESSI_SAN_FELICE_SUL_PANARO": ""} + many others

Так, например, если я нажимаю на область "BONDENO", я могу получить номер "PROCESSI_BONDENO". Часть имени совпадает, а часть нет. Я пытался с str.match, но пока не получил никаких результатов. Как я мог это сделать?

Спасибо

1 Ответ

1 голос
/ 12 марта 2020

Вы имеете в виду что-то подобное?

const ProcessiJSON = [
    {
      "": 0,
      "ANNO_DI_AVVIO": 2010,
      "PROCESSI_BONDENO": "5",
      "PROCESSI_CAMPOSANTO": "",
      "PROCESSI_CAVEZZO": "",
      "PROCESSI_CENTO": "",
      "PROCESSI_CONCORDIA_SULLA_SECCHIA": "",
      "PROCESSI_CREVALCORE": "",
      "PROCESSI_FINALE_EMILIA": "",
      "PROCESSI_MEDOLLA": "",
      "PROCESSI_MIRABELLO": "",
      "PROCESSI_MIRANDOLA": "",
      "PROCESSI_NOVI_DI_MODENA": "",
      "PROCESSI_PIEVE_DI_CENTO": 1,
      "PROCESSI_REGGIOLO": "",
      "PROCESSI_SAN_FELICE_SUL_PANARO": "" 
}]

const findValues = (key) => {
  key = key.toUpperCase();
  return Object.keys(ProcessiJSON[0]).filter(item => item.indexOf(key) !=-1)
}  

let clicked = "Bondeno";
let match = findValues(clicked)
match.forEach(key => $(".lead").append('ciao fatto '+key+':',ProcessiJSON[0][key]+"<br/>") )

clicked = "Mira";
match = findValues(clicked)
match.forEach(key => $(".lead").append('ciao fatto '+key+':',ProcessiJSON[0][key]+"<br/>") )
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="lead"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...