Tro*_*roy 5 javascript json object
我已经创建了一个JavaScript对象
var obj={}
var prop = {}
prop.name= "name",
prop.value = "10"
obj[old_name] = prop;
Run Code Online (Sandbox Code Playgroud)
我需要更改old_name为new_name.我试过了
obj[new_name] = obj[old_name];
delete obj[old_name];
Run Code Online (Sandbox Code Playgroud)
它可以工作但是,对象顺序会发生变化.
例如:
{"obj1":{"name:name","value:10"},"obj2":{"name:name","value:10"}}
Run Code Online (Sandbox Code Playgroud)
如果我更换obj1用objone,就像这样:
obj[objone ] = obj[obj1];
delete obj[obj1 ];
Run Code Online (Sandbox Code Playgroud)
对象顺序更改为:
{"obj2":{"name:name","value:10"},"objone":{"name:name","value:10"}}]
Run Code Online (Sandbox Code Playgroud)
但我需要单独更改属性名称而不是顺序,我也尝试使用字符串替换,但我认为这不是正确的方法,所以请给我一些想法.
对象没有订单.您看到的任何明显的顺序都是未指明的行为,您不能依赖它.问题被提出时他们没有,但他们现在这样做了:
- 让密钥成为新的空列表.
- 对于每个自己的属性键P,O是一个整数索引,按升序数字索引顺序
- 添加P作为键的最后一个元素.
- 对于每一个自己的财产键P的Ø这是一个字符串,但不是整数指数,物业创建顺序
- 添加P作为键的最后一个元素.
- 对于作为符号的O的每个自有属性键P,在属性创建顺序中
- 添加P作为键的最后一个元素.
- 返回键.
您重命名属性的方法是执行此操作的唯一方法:创建一个新方法,然后删除旧方法.这样做会改变它在对象顺序中出现的位置,因为它是在前一个属性之后创建的.
如果您需要订购,请使用数组.虽然理论上数组也没有顺序(因为它们不是真正的数组),但是根据条目索引的数值,我们有它们有顺序的约定:索引处的条目在索引0处的条目之前1等等.(现代JavaScript引擎可以并且尽可能使用真实数组.)