Как проверить почтовый индекс в JavaScript? - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь выяснить, должен ли этот человек оплачивать транспортные расходы.

Я разбил почтовый индекс на цифры и буквы.Затем я проверяю, находится ли ввод между 1000 и 2000 и между AA и BB.

Проблема: Когда я набираю почтовый индекс 1000AA или 2000BB или что-то среднее между ними, я всегда получаюОтвет else, даже если утверждение if верно.

var sendingCost = 15;
var city = prompt("What city do you live in?");
var postalCode = prompt("What is your postal code?");
var postalCodeC = postalCode.slice(0, 3);
var postalCodeL = postalCode.slice(4, 5);

if (city == 'Amsterdam' && postalCodeC >= 1000 && postalCodeC <= 2000 && postalCodeL >= 'AA' && postalCodeL <= 'BB') {
  alert('There is no sending cost')
} else {
  alert('The sending cost is €15.')
};

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Как уже упоминал @Ivar, я не думаю, что вы понимаете, как работает функция слайса.Первый аргумент должен быть начальной позицией, а второй должен быть конечной позицией.Таким образом, если вы хотите выбрать только первые 4 цифры, а затем 2 буквы, которые вы должны использовать:

let postcode = "1500BD";
//Also, simply using slice will return a string, thus, you may want to convert it using Number();
let num = Number(postcode.slice(0, 4));
let letters = postcode.slice(4);
0 голосов
/ 12 октября 2018

Ваш slice() не принимает все четыре цифры почтового индекса.Вместо этого используйте следующее postalCode.slice(0, 4).

Посмотрите на документы Mozilla относительно slice.

В приведенном ниже фрагменте рабочего кода также обратите внимание на следующие тристроки.

var postalCodeC = Number(postalCode.slice(0, 4));
// converts the alphanumeric value from prompt to a number for better comparison.
var postalCodeL = postalCode.slice(-2).toUpperCase();
// converts the letters of the postal code to CAPS, this way Aa, AA or aa will be valid too.
var correctCity = city.toLowerCase() === 'amsterdam';
// the same here, convert city to lowercase letters and compare the input to 'amsterdam'

Рабочий пример.

var sendingCost = 15;
var city = prompt("What city do you live in?");
var postalCode = prompt("What is your postal code?");
var postalCodeC = Number(postalCode.slice(0, 4));
var postalCodeL = postalCode.slice(-2).toUpperCase();

var correctCity = city.toLowerCase() === 'amsterdam';
var withinPostalArea = postalCodeC >= 1000 && postalCodeC <= 2000 && postalCodeL >= 'AA' && postalCodeL <= 'BB';

console.log(postalCodeC);
console.log(postalCodeL);

if (correctCity && withinPostalArea) {
  alert('There is no sending cost');
} else {
  alert('The sending cost is €' + sendingCost);
};

ПРИМЕЧАНИЕ: Чтобы помочь вам решить эти проблемы.console.log() вывод, чтобы проверить значение переменной и посмотреть, соответствует ли оно ожидаемому.

0 голосов
/ 11 октября 2018

Попробуйте это

var postcodec = +postcode.slice(0, 4); var postcodeL = postcode.slice(4, 6);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...