我应该如何替换
Javascript键中的键字符串:值哈希映射(作为对象)?
这是我到目前为止:
var hashmap = {"aaa":"foo","bbb":"bar"}; console.log("before:"); console.log(hashmap); Object.keys(hashmap).forEach(function(key){ key = key + "xxx"; console.log("changing:"); console.log(key); }); console.log("after:"); console.log(hashmap);
看它在这个jsbin中运行.
“之前”和“之后”的哈希映射是相同的,因此forEach似乎在不同的范围内.我该如何解决?也许有更好的方法来做到这一点?
解决方法
它与范围无关. key只是一个局部变量,它不是实际对象键的别名,因此分配它不会更改对象.
Object.keys(hashmap).forEach(function(key) { var newkey = key + "xxx"; hashmap[newkey] = hashmap[key]; delete hashmap[key]; });