排序和替换对象键值 - Javascript

时间:2021-07-28 02:13:19

标签: javascript node.js json

我有一个看起来像这样的负载:

{ key: 1 }

我如何才能真正将此有效负载替换为如下所示的内容?

{ "key.something": { anotherKey: "abc" } }

我用来替换有效载荷的旧代码看起来像这样。

let a = { ...payload };

if (lodash.isEqual(a, { key: 1 })) {
  a = {
    "key.something": { anotherKey: "abc" }
};

return a;

但我认为我目前使用的方法不够有效,因为后面的 if 太多了。那么我如何才能真正获得键值,然后根据键值对其进行排序,然后像上面一样替换它?

感谢您的帮助??

2 个答案:

答案 0 :(得分:0)

如果您想根据有效负载返回值,只需创建一个包含要替换的值和替换值的二维数组,然后对其进行循环

let a = {... payload};

let combinations = [
    [{key: 1}, { "key.something": { anotherKey: "abc" } }],
    // some more combinations
];

combinations.forEach(e => {
    if (lodash.isEqual(a, e[0])) {
        a = e[1];
        break;
    }
})

return a;

答案 1 :(得分:0)

告诉我我是否误解了这个问题,但如果有效载荷的 key 等于 1 返回(替换)有效载荷

{ "key.something": { anotherKey: "abc" } }

根据评论更新

如果是这样,您只需执行以下操作:

function transformPayload(payload, searchKey, searchVal){
   if(payload[searchKey]){
     if(payload[searchKey] === searchVal){
       return {
           'key.something': { anotherKey: "abc" }
       }
     }
   }
   else throw new Error(`payload does not have the key: ${searchKey}`);
}

然后调用这个函数:

const updatedPayload = transformPayload(payload, 'key', 1);
相关问题