我正在编写一个映射器,用于识别字符串中的单词并用另一个单词替换它们。就我而言,是一个具有实际目录位置的位置标识符。
我的问题位于第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;
}
我正在节点环境中开发。但我很确定这是我的逻辑错误。
答案 0 :(得分:1)
字符串在Javascript中是不可变的,因此String.replace()不能修改str,它会返回一个执行了替换的新String。变化
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;
}