У меня есть телефонный номер в виде строки «+22 123 234 22». Я пытаюсь отформатировать как «+22 12323422». Ниже приведен код, который я пытаюсь выполнить. Но длина массива строк не будет постоянной. Что было бы идеальным способом сделать это?

var x = "+12 123 344 22";
var y = x.split(" ");
var z = y[0] + " " + y[1] + y[2] + y[3];
console.log(z);

Я знаю, что могу использовать цикл for, чтобы добиться этого, как показано ниже. Но я ищу что-то из методов массива, таких как "Skip ()" в C #.

    var x = "+12 123 344 22";
    var y = x.split(" ");
    var t = y[0]+" ";
    
    for(var a=1; a<y.length; a++){
    t+=y[a];
    }
    
    var z = y[0] + " " + y[1] + y[2] + y[3];
    console.log(t);
0
amar 8 Июл 2021 в 08:29

3 ответа

Лучший ответ

slice может пригодиться:

var x = "+12 123 344 22";
var y = x.split(" ");
var z = y[0] + " " + y.slice(1).join('');
console.log(z);

Еще пара вариантов:

var x = "+12 123 344 22";

let [h, ...rest] = x.split(" ");
console.log(h + " " + rest.join(''))

let y = x.split(" ");
console.log(y.shift() + " " + y.join(''))

console.log(x.replace(' ', '@').replaceAll(' ', '').replace('@', ' '))
2
georg 8 Июл 2021 в 05:35

Используя метод массива - reduce() и имея условие if для первого индекса:

var x = "+12 123 344 22";
var y = x.split(" ");
var z = y.reduce((cum,x,index) =>{
   if(index == 0) return y[0] + " ";
   return cum + y[index];
},"");
console.log(z);
1
Tushar Shahi 8 Июл 2021 в 06:04

Используйте for loop для итерации от 1 (исключая первый элемент), чтобы присоединиться к остальной части разделенной строки.

var x = '+12 123 344 22';
var y = x.split(' ');
var z = y.length > 0 ? `${y[0]} ` : '';
for (let i = 1; i < y.length; i ++) {
    z += y[i];
}
console.log(z);
0
Nikhil Patil 8 Июл 2021 в 05:34