首页 > 解决方案 > 重命名对象中的某些键

问题描述

我有一个具有多个键和值的对象。

我只想重命名一些键而不是全部。通过我所做的,它不会返回对象中的其余键值对:

data = {key1: "value1", key2: "value2", key3: "value3", key4: "value4"}; 

keyMap = {key1: "firstkey", key2: "secondkey"};

mappedData = Object.keys(keyMap).reduce((obj,k) => Object.assign(obj, { [keyMap[k]]: data[k] }),{});

console.log(mappedData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

我如何回来:

{
  firstkey: "value1",
  secondkey: "value2",
  key3: "value3", 
  key4: "value4"
}

标签: javascriptjqueryobjectecmascript-6key-value

解决方案


keyMap您可以通过检查并获取新密钥或获取旧密钥来获取条目并替换密钥。

let data =  { key1: "value1", key2: "value2", key3: "value3", key4: "value4" }; 
    keyMap = { key1: "firstkey", key2: "secondkey" },
    mappedData = Object.fromEntries(
        Object
            .entries(data)
            .map(([key, value]) => [key in keyMap ? keyMap[key] : key, value])
    );

console.log(mappedData);


推荐阅读