Проверьте более одного массива почтовых индексов, если существует, затем найдите соответствующую скорость - PullRequest
0 голосов
/ 03 февраля 2020

Я разрабатываю тему в жидкости (Shopify) и javascript. У меня есть три массива действительных почтовых индексов, каждый из которых имеет соответствующую скорость доставки. Эти данные поступают из настроек разделов темы Shopify.

Вот как это выглядит в выводе json:

"zip-validator-rate-zone1": 10,
"zip-validator-zipcodes-zone1": "37201, 37203, 37204, 37220",

"zip-validator-rate-zone2": 15,
"zip-validator-zipcodes-zone2": "37205, 37206, 37207, 37208, 37209, 37210, 37211, 37212, 37214, 37215, 37216, 37217, 37218, 37219, 37221, 37064, 37067, 37069",

"zip-validator-rate-zone3": 20,
"zip-validator-zipcodes-zone3": "37027",

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

1 Ответ

0 голосов
/ 03 февраля 2020

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

let zoneArray = [{
    "zip-validator-rate-zone1": 10,
    "zip-validator-zipcodes-zone1": "37201, 37203, 37204, 37220",
  },

  {
    "zip-validator-rate-zone2": 15,
    "zip-validator-zipcodes-zone2": "37205, 37206, 37207, 37208, 37209, 37210, 37211, 37212, 37214, 37215, 37216, 37217, 37218, 37219, 37221, 37064, 37067, 37069",
  },
  {
    "zip-validator-rate-zone3": 20,
    "zip-validator-zipcodes-zone3": "37027"
  }
]

function getZoneRateByZipCode(code) {
  return zoneArray.map((d, i) => d['zip-validator-zipcodes-zone' + (i + 1)].split(', ').indexOf(code) > -1 ? d['zip-validator-rate-zone' + (i + 1)] : undefined).find(v => !!v)
}

console.log(getZoneRateByZipCode('37203'))
console.log(getZoneRateByZipCode('37069'))
console.log(getZoneRateByZipCode('37027'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...