如何动态替换JavaScript对象属性名称

我创建了一个JavaScript对象

var obj={}
var prop = {}
prop.name= "name",
prop.value = "10"
obj[old_name] = prop;

我需要将old_name更改为new_name 。 我努力了

obj[new_name] = obj[old_name];
delete obj[old_name];

它可以工作,但是对象顺序会发生变化。

例如:

{"obj1":{"name:name","value:10"},"obj2":{"name:name","value:10"}}

如果我用objone替换obj1 ,像这样:

obj[objone ] = obj[obj1];
delete obj[obj1 ];

对象顺序改为:

{"obj2":{"name:name","value:10"},"objone":{"name:name","value:10"}}]

但我需要单独更改属性名称而不是命令,我也尝试更换字符串,但我认为这不是正确的方式,所以请给我一些建议。

author: troy
采纳答案:

对象没有顺序。 你看到的任何明显的顺序都是不明确的行为,你不能依赖它。 他们没有问这个问题,但现在他们做了

  1. 为新的空列表。
  2. 对于作为整数索引的O的每个自有属性键P ,按升序数字索引顺序排列
    • P添加为的最后一个元素。
  3. 对于属于字符串O但不是整数索引的O的每个属性关键字P ,在属性创建顺序中
    • P添加为的最后一个元素。
  4. 对于作为符号的O的每个属性关键字P ,在属性创建顺序中
    • P添加为的最后一个元素。
  5. 返回

您重命名该属性的唯一方法是:创建一个新的属性,然后删除旧的属性。 这样做会改变它以对象顺序出现的位置,因为它是在前一个属性之后创建的。

如果您需要订购,请使用数组。 虽然理论上数组也没有顺序(因为它们不是真正的数组 ),但是根据条目索引的数字值我们有它们有序的约定:索引0处的条目位于条目之前索引1等。 (现代JavaScript引擎可以并且尽可能使用真正的数组。)

author: t-j-crowder

参考更多解答: How to replace the javascript object property name dynamically ,转载请保留出处如何动态替换JavaScript对象属性名称及作者信息

Statement: We respect knowledge and authors. Since the content comes from the Internet and is intended for scientific research, any reprinters should retain the author's signature and origin. If you are the author of the content and feel in dispute, please contact email: 1076545519@qq.com. We will find out the situation and deal with it in time. We sincerely thank the author for his hard work.


更多:object