Доступ как к ключу объекта JavaScript, так и к значению

#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;
}