В коде, который я разрабатываю и поддерживаю, я столкнулся с проблемой.
У меня есть функция, которая принимает запрос (строка типа) и заменяет подстроки этой строки другой строкой. Например, если пользователь вводит строку I have a cat
, он заменяет ее на I have a dog
.
Мой код работает, но проблема в том, что у меня есть сотни таких подстрок, которые необходимо заменить другой. , Это также выглядит очень плохо с эстетической точки зрения.
var myString;
myString = myString.replace('cat','dog')
.replace('elephant','zebra')
.replace('bird','fish')
// Goes on for hundreds of lines
Это все внутри функции, в которой каждый раз, когда она вызывается, она проходит через сотни replace
вызовов.
Одна вещь, которую я мог бы попытаться сделать, это создание массива объектов и итерация по нему. Код будет выглядеть примерно так:
var animalsArray = [
{'a':'cat','b':'dog'},
{'a':'elephant','b':'zebra'},
{'a':'bird','b':'fish'}
];
А потом в моей функции
function stringReplace(string) {
for (var i = 0; i < animalsArray.length; i++) {
if (string.indexOf(animalsArray[i]['a']) > -1) {
sting = string.replace(animalsArray[i]['a'],animalsArray[i]['b']);
}
}
}
Но я не уверен, улучшит ли это мою нынешнюю практику объединения сотен заменить вызовы.
Я в основном ищу, чтобы оптимизировать мой текущий код. Какова лучшая практика?