使用startsWith函数来识别邮政编码的前三位

时间:2018-07-16 20:29:42

标签: javascript jquery arrays function startswith

我正在尝试使用startsWith函数来识别正在输入的邮政编码的前三位。我正在测试的邮政编码为44646。添加该邮政编码时,应将其识别为446str数组中的字段之一。 else语句已被识别并且正在读取。

有人看到我在做什么错吗?

$('#salesforce_submit').change(function () {
		zipVal = $('#zip').val();
		var zipVals = [ 44030 , 44048 , 44082 , 44003 , 44093 , 44076 , 44062 , 44021 , 44046 , 44099 , 44032 , 44047 , 44010 , 44057 , 44086 , 44064 , 44024 , 44023 , 44065 , 44022 , 44072 , 44040 , 44143 , 44094 , 44139 , 44146 , 44128 , 44105 , 44122 , 44124 , 44121 , 44117 , 44108 , 44110 , 44103 , 44106 , 44118 , 44120 , 44104 , 44114 , 44127 , 44125 , 44131 , 44134 , 44129 , 44130 , 44144 , 44109 , 44115 , 44136 , 44133 , 44147 , 44141 , 44067 , 44056 , 44087 , 44195 ];
		var str = [ 442 , 443 , 444 , 445 , 446 , 447 , 437 , 438 , 439 , 457 , 434 , 435 , 436 , 164 , 165 , 163 , 161 , 160 , 162 , 150 , 151 , 152 , 156 , 153 , 154 , 585 , 716 , 142 ];
		if ( zipVal.startsWith( +str ) ) {
			contains = 'Contain in place';
      $('#show').text(contains);
		} else {
			contains = 'Contain not in place';
      $('#show').text(contains);
		}
		console.log(contains);
		if ( zipVals.includes( +zipVal ) ) {
			zipAssign = 'AB';
		} else {
			zipAssign = '';
		}
		console.log(zipAssign);
	});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="salesforce_submit">
<div><input id="zip" placeholder="Zip/Postal Code*" class="input block" maxlength="6" name="zip" type="text" pattern= "[0-9]{5}"></div>
<p id="show"></p>
</form>

1 个答案:

答案 0 :(得分:1)

+str表达式为您提供了一个NaN,因为您将数组转换为数字。因此,尝试检查这种方式: if (str.find(num => zipVal.startsWith(num)) !== undefined;) ...

if ( zipVals.includes( +zipVal ) ) {

也应这样做