我的输出格式不是我想要的格式。
我得到(123) 4567890-
,但我想要(123) 456-7890
// Display as Phone number: (123) 456-7890
var num = [1, 2, 3, 4, 5, 6, 7, 8, 9 , 0];
var zip = [];
var mid = [];
var last = [];
for (i=0; i< 10; i++) {
if (i < 3) {
zip.push(num[i]);
} else if (2 < i < 6) {
mid.push(num[i]);
} else {
last.push(num[i]);
}
}
console.log('(' + zip.join("") + ') ' + mid.join("") + '-' + last.join(""));
答案 0 :(得分:0)
使用原始代码,(2 < i < 6)
就是出错的地方。
它表示“如果2小于i,其结果小于6”。这将永远是真的,因为boolean
表达式“2”小于“i”将为真或假,并且当真/假解析为1/0时它将始终为小于6。
而是仅使用(i < 6)
。它将捕获小于6的 i ,但永远不会得到小于3的那些,因为它们将在您的第一个 if 语句中被捕获。
// Display as Phone number: (123) 456-7890
var num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
var zip = [];
var mid = [];
var last = [];
for (i = 0; i < 10; i++) {
if (i < 3) {
zip.push(num[i]);
} else if (i < 6) {
mid.push(num[i]);
} else {
last.push(num[i]);
}
}
console.log('(' + zip.join("") + ') ' + mid.join("") + '-' + last.join(""));
以下是其他一些您可能会觉得更简单的方法。
使用splice
将括号和短划线注入数组
var num = [1, 2, 3, 4, 5, 6, 7, 8, 9 , 0];
console.log( formatMyNumber(num) );
function formatMyNumber(arr) {
arr.splice(0, 0, "(");
arr.splice(4, 0, ") ");
arr.splice(8, 0, "-");
return arr.join('');
}
或template literals结合slice
和删除 3个数字范围
var num = [1, 2, 3, 4, 5, 6, 7, 8, 9 , 0];
console.log( formatMyNumber(num) );
function formatMyNumber(a) {
a = a.join('');
return `(${a.slice(0,3)}) ${a.slice(3,6)}-${a.slice(6)}`;
}
或仅与slice
var num = [1, 2, 3, 4, 5, 6, 7, 8, 9 , 0];
console.log( formatMyNumber(num) );
function formatMyNumber(a) {
a = a.join('');
return '(' + a.slice(0,3) + ') ' + a.slice(3,6) + '-' + a.slice(6);
}