如何检查JavaScript中的邮政编码?

时间:2018-10-11 19:43:02

标签: javascript if-statement

我正在尝试查找此人是否需要支付运输费用。

我所做的是将邮政编码分为数字和字母。接下来,我检查输入是否在1000和2000之间以及AA和BB之间。

问题::当我输入邮政编码1000AA或2000BB或两者之间的内容时,即使if语句正确,我也总是会得到else答案。

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 :(得分:0)

尝试一下

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

答案 1 :(得分:0)

正如@Ivar所述,我认为您不了解slice函数的工作方式。第一个参数应该是开始位置,第二个参数应该是结束位置。因此,如果您只想选择前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);

答案 2 :(得分:0)

您的slice()未使用邮政编码的全部四个数字。而是使用以下postalCode.slice(0, 4)

看看有关slice的{​​{3}}。

在下面的工作代码段中,还请注意以下三行。

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()输出以检查变量的值,并查看它是否是您期望的值。