Замените строку номерами, которые напоминают строку, используя string.replace()

Здесь у меня есть строка кода, которую я бы предпочел взять '123' в качестве строкового значения. Затем с помощью split() и join() он станет строкой типа '1,2,3'. Затем я хочу заменить все числовые строковые значения на фактическое число, например 1,2.... Для этого я использовал переменную с именем k и дал ей начальное значение 1. Я использовал оператор инкремента внутри замены, чтобы изменить значение k. Но это не работает. Возможно, мне становится неправильно, как string.replace() выполняет операцию замены. Я также пытался использовать parseInt('$1') он также не работал.

console дает выход 1,1,1.Нет операции увеличения.

2 ответа

Ну, вы можете использовать вместо этого обратный вызов:

var k = 1;
'123'.split('').join(',').replace(/\d/g, function() {
 return k++;
});

По существу, значение k++ принимается как аргумент - другими словами, эта операция оценивается только один раз.

Но если вы хотите просто получить последовательность целых чисел, есть гораздо лучшие подходы. Например:

function getSequence(start, end) {
 var res = [];
 for (var i = start; i <= end; i++) {
 res.push(i);
 }
 return res;

 // or just...
 // return Array.apply(0, Array(end - start + 1))
 // .map(function(_, i) { return start + i });
 // ... if you feel adventurous. )
}
getSequence(2, 4); // [2, 3, 4]


Если вы не хотите увеличивать число:

var arr = '123'.split('').map(Number);

Если вы это сделаете:

var arr = '123'.split('').map(function (num) { return Number(num) + 1; });

licensed under cc by-sa 3.0 with attribution.