如何使用foreach循环格式化美国电话号码?

时间:2019-01-17 10:11:25

标签: javascript arrays foreach

当元素具有重复编号时,在someStringArray.indexOf()循环中使用forEach逻辑会被触发。

我正在尝试使用美国电话号码,并以(xxx)xxx-xxxx的格式使用最初的10位数字作为字符串。然后转换为数组,以便我可以循环遍历并格式化它。

"use strict";

let tel = 5149100499;
let telStr = tel.toString();
let ntel = telStr.split('');

ntel.forEach(char => {
  let d = ntel.indexOf(char);
  if(ntel.indexOf(char) === 0) {
      ntel.splice(d,0,"(");
  }else if(ntel.indexOf(char) === 4){
      ntel.splice(d,0,")");
  }else if(ntel.indexOf(char, 7) === 9){
      ntel.splice(d,0,"-");
  }

});

let ntelStr = ntel.join('');

  console.log(ntelStr);

理想情况下,输出应为: ntelStr = (514)910-0499

2 个答案:

答案 0 :(得分:0)

var tel = 5149100499;
var s = tel.toString();
s = `(${s.substring(0, 3)})${s.substring(3,6)}-${s.substring(6,10)}`
console.log(s);

答案 1 :(得分:0)

您可以使用string#replace将电话号码转换为所需的格式。

"use strict";

let tel = 5149100499,
    result = tel.toString().replace(/(\d{3})(\d{3})(\d{4})/,'($1)$2-$3');
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0;}