#javascript #node.js
#javascript #node.js
Вопрос:
Я пишу картограф, который определяет идентифицирующие слова в строке и заменяет их другим словом. В моем случае идентификатор местоположения с фактическим местоположением каталога.
Моя проблема находится в строке 8 : str.replace(x.toString(), keys[x]);
Значение x
является ожидаемым значением, но keys[x]
возвращается undefined
.
var keys = {
"$processes" : "/processes",
"$local_resources" : "/feeds/local"
};
function CoreRoute(str){
for (var x in keys){
str.replace(x, keys[x]);
}
return str;
}
Я разрабатываю в среде узла. Но я почти уверен, что это ошибка с моей логикой.
Ответ №1:
Строки неизменяемы в Javascript, поэтому String.replace() не может изменить str, он возвращает новую строку с выполненной заменой. Изменить
str.replace(x, keys[x]);
Для
str = str.replace(x, keys[x]);
Конечный код:
var keys = {
"$processes" : "/processes",
"$local_resources" : "/feeds/local"
};
function CoreRoute(str) {
for (var x in keys) {
str = str.replace(x, keys[x]);
}
return str;
}