JS重命名对象键,同时保留其在对象中的位置

JS rename an object key, while preserving its position in the object(JS重命名对象键,同时保留其在对象中的位置)
本文介绍了JS重命名对象键,同时保留其在对象中的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的javascript对象如下所示:

const someObj = {
  arr1: ["str1", "str2"],
  arr2: ["str3", "str4"]
}
在尝试重命名密钥(例如arr1)时,我最终删除了现有密钥并用原始值写入了一个新密钥。obj的顺序更改

someObj = {
  arr2: ["str3", "str4"],
  renamedarr1: ["str1", "str2"]
}

如何在保留密钥顺序的同时重命名密钥

推荐答案

您可能需要考虑将键数组减少到一个新对象中。 为此,您还需要知道哪个键更改为什么。

  1. 减少键数组
  2. 使用检查密钥更改的减速器,并在必要时进行更改。
  3. 将键添加到值为
  4. 的对象中

之后,您将拥有一个具有以前顺序的对象,并且更改的键可能仍然位于相同位置

这样的东西可能会起作用(未经过测试)

const changedKeyMap = {"previousKey": "newKey"};
const keys = Object.keys(this.state.obj);
const content = e.target.value;
const result = keys.reduce((acc, val) => {
    // modify key, if necessary
    if (!!changedKeyMap[val]) {
        val = changedKeyMap[val];
    }
    acc[val] = content;
    // or acc[val] = this.state.obj[val] ? 
    return acc;
}, {});

如您所见,您需要跟踪如何更改密钥(ChangedKeyMap)。 Reduce函数只是按照正确的顺序迭代所有键,并将它们添加到新创建的对象中。如果更改了密钥,您可以将其签入changedKeyMap并替换它。它仍将位于正确位置

这篇关于JS重命名对象键,同时保留其在对象中的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)