如果不使用最后一个数字返回数组[2],我无法得到我的第三个。非常感谢你在片上出错的任何帮助。
问题:开发一个清理输入的电话号码的功能 用户。
规则如下:
- 如果电话号码小于10位或大于11位,则认为号码不合适
- 如果电话号码是10位数,则认为它是好的
- 如果电话号码是11位且第一个号码是1,请修剪1并使用最后10位数字
- 如果电话号码是11位且第一个号码不是1,那么这是一个不好的号码。
提示:您可能需要使用charAt方法。
var phoneNumbers = ["456799", "1234567898", "12345678911", "23456789101"];
function phoneNumberCleanUp(array) {
for (var i = 0; i < array.length; i++) {
if ((array[i].length < 10) && (array[i].length > 11)) {
console.log("This is a bad number: " + array[i]);
} else if (array[i].length === 10) {
console.log("This is a good number: " + array[i]);
} else if ((array[i].length === 11) && (array[i].charAt(0) === "1")) {
console.log("This is a good number: " + array[i].slice(array[i].length, -1));
} else if ((array[i].length === 11) && (array[i].charAt(0) !== 1)) {
console.log("This is a bad number also: " + array[i]);
} else {
console.log("This is a bad number too: " + array[i]);
}
}
}
phoneNumberCleanUp(phoneNumbers);
答案 0 :(得分:1)
简单修复:else if ((array[i].length === 11) && (array[i].charAt(0) !== '1'))
比较字符串1,而不是数字1.此时切片也有一点不同:
console.log("This is a good number: " + array[i].slice(1, array[i].length));
就个人而言,我更喜欢这样写:
var phoneNumbers = ["456799", "1234567898", "12345678911", "23456789101"];
const phoneNumberCleanUp = phoneNumbers => {
phoneNumbers.forEach(phoneNumber => {
if (phoneNumber.length === 10)
console.log('This is a good number:', phoneNumber);
else if ((phoneNumber.length === 11) && phoneNumber.startsWith('1'))
console.log('This is a good number:', phoneNumber.substring(1));
else
console.log('This is a bad number:', phoneNumber);
});
};
phoneNumberCleanUp(phoneNumbers);
答案 1 :(得分:0)
引自JavaScript The Definitive Guide第6版:
等于运算符==就像严格相等运算符(===),但它不那么严格。如果两个操作数的值不是同一类型,它会尝试某些类型转换并再次尝试比较。
和强>
严格相等运算符===计算其操作数,然后按如下方式比较这两个值,不执行类型转换。
所以请保留你的!==运营商,但要将1更改为&#39; 1&#39;
如果我将使用1个索引中的子串,10个字符转发
,那么你的第二个function phoneNumberCleanUp(array) {
for (var i = 0; i < array.length; i++) {
if ((array[i].length < 10) && (array[i].length > 11)) {
console.log("This is a bad number: " + array[i]);
} else if (array[i].length === 10) {
console.log("This is a good number: " + array[i]);
} else if ((array[i].length === 11) && (array[i].charAt(0) === "1")) {
console.log("This is a good number: " + array[i].substring(1 , 10));
} else if ((array[i].length === 11) && (array[i].charAt(0) !== '1')) {
console.log("This is a bad number also: " + array[i]);
} else {
console.log("This is a bad number too: " + array[i]);
}
}
}
phoneNumberCleanUp(phoneNumbers);