如何动态替换javascript对象属性名
我创建了一个JavaScript对象,如如何动态替换javascript对象属性名,javascript,json,object,Javascript,Json,Object,我创建了一个JavaScript对象,如 var obj={} var prop = {} prop.name= "name", prop.value = "10" obj[old_name] = prop; 我需要将旧名称更改为新名称。我试过了 obj[new_name] = obj[old_name]; delete obj[old_name]; 它是有效的,但是,对象顺序改变了 例如: {"obj1":{"name:name","value:10"},"obj2":{"name:nam
var obj={}
var prop = {}
prop.name= "name",
prop.value = "10"
obj[old_name] = prop;
我需要将旧名称
更改为新名称
。我试过了
obj[new_name] = obj[old_name];
delete obj[old_name];
它是有效的,但是,对象顺序改变了
例如:
{"obj1":{"name:name","value:10"},"obj2":{"name:name","value:10"}}
如果我将obj1
替换为objone
,如下所示:
obj[objone ] = obj[obj1];
delete obj[obj1 ];
对象顺序更改为:
{"obj2":{"name:name","value:10"},"objone":{"name:name","value:10"}}]
但是我需要单独更改属性名称,而不是顺序,我也尝试使用字符串替换,但我认为这不是正确的方法,因此请给我一些建议。对象没有顺序。你看到的任何明显的顺序都是未指明的行为,你不能依赖它。当被问到这个问题时,他们没有回答,但是:
- 添加P作为键的最后一个元素
- 添加P作为键的最后一个元素
- 添加P作为键的最后一个元素
如果需要订购,请使用数组。虽然理论上数组也没有顺序(因为),但我们有一个惯例,即它们有顺序,基于条目索引的数值:索引
0
处的条目在索引1
处的条目之前,依此类推。(而且现代JavaScript引擎可以而且确实尽可能使用真实数组。)对象没有顺序。为什么顺序是个问题?我已经冒昧地修复了我认为是你问题中的一个输入错误(你使用了pre_name
而不是old_name
,我很确定你的意思是old_name
)。另外,在英语中,它总是“I”(大写),而不是“I”(小写)。我不认为这是对这个问题的愚弄,@Cerbrus,因为顺序是这个问题的重要组成部分。这不是唯一的方法。您可以使用:JSON.parse(JSON.stringify(myObj).replace(新旧))
。(说真的,不要用这个)@Cerbrus::-)也许这是唯一不能完全替换对象的方法。@Cerbrus不,你不能。原始文本替换并不等同于上述代码,因为它会将每次出现的old
替换为new
。不仅在一个属性名称中。不仅在键中。@TheParamagneticCroissant:var old='“myKey:”,new='“otherKey:”
。或者使用正则表达式替换。当然,只要把钥匙自己倒进去就有问题了。首先,比使用这个问题更多。