2011-10-28 12 views
1

私は、文字列内の単語を識別し、それらを別の単語に置き換えるマッパーを作成しています。私の場合、実際のディレクトリの場所を持つ場所識別子。 str.replace(x.toString(), keys[x]);JavaScriptオブジェクトのキーと値の両方にアクセスする

xが期待された値が、keys[x]戻っundefinedは次のとおりです。


私の問題は8行目にあります。

var keys = { 
    "$processes"  : "/processes", 
    "$local_resources" : "/feeds/local" 
}; 

function CoreRoute(str){ 
    for (var x in keys){ 
     str.replace(x, keys[x]); 
    } 
    return str; 
} 

私はノードenviroenmentで開発中です。しかし、私はそれが私の論理と間違いであると確信しています。

答えて

1

文字列はJavascriptで不変です。したがって、String.replace()はstrを変更できません。置換が行われた新しいStringが返されます。

var keys = { 
    "$processes"  : "/processes", 
    "$local_resources" : "/feeds/local" 
}; 

function CoreRoute(str) { 
    for (var x in keys) { 
     str = str.replace(x, keys[x]); 
    } 
    return str; 
} 

str.replace(x, keys[x]); 

str = str.replace(x, keys[x]); 

に終了コードを変更します
関連する問題