Javascript如何重命名对象键保持值和位置

标签 javascript object

我有这个对象:

let obj = {one: 1, two: 2, three: 3, eight: 4, five: 5}

我需要的是用 four 重命名 eight ,保持相同的值和相同的位置。我这样做了:

let obj = {one: 1, two: 2, three: 3, eight: 4, five: 5}
let tmp = obj[eight];
delete obj.eight;
obj.four = tmp;

但显然它会返回:{one: 1, Two: 2, Three: 3, Five: 5, four: 4}而不是{one: 1, Two: 2 ,三:3,四:4,五:5}

我想将属性保存在键值数组上,然后重建整个对象,但这种方式效率不高,因为我无法知道该对象可以存储多少个属性。有任何提示吗?

最佳答案

自 ECMAScript 2015 起,在 JS 中,迭代顺序与插入顺序相同(对于字符串和符号键)。所以你需要重新创建完整的对象:

let obj = {one: 1, two: 2, three: 3, eight: 4, five: 5};

obj = Object.keys(obj)
  .reduce((a, key) => ({
    ...a,
    [key === 'eight' ? 'four' : key]: obj[key],
  }), {});

console.log(obj); // prints {one: 1, two: 2, three: 3, four: 4, five: 5}

如果这对于您正在解决的问题来说不够有效,我想您会以不同的方式存储数据。

关于Javascript如何重命名对象键保持值和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61311504/

相关文章:

python - 列表对象转换为整数

Java 对象创建错误

javascript - 将键从另一个对象合并到嵌套对象中

Java 对象数组 Foreach 方法访问

javascript - 预加载图像并获取进度

javascript - AngularJS ng-重复嵌套 JSON 数据

javascript - 如何从jtemplate中的javascript读取数据

javascript - 使用 JavaScript/PHP 安全提交表单

javascript - typescript :如何键入具有在实例化时不可用的必填字段的对象?

javascript - 仅在悬停时通过 x 和 y 绘图线将文本添加到生成的象限区域,highcharts