我有一个看起来像这样的负载:
{ key: 1 }
我如何才能真正将此有效负载替换为如下所示的内容?
{ "key.something": { anotherKey: "abc" } }
我用来替换有效载荷的旧代码看起来像这样。
let a = { ...payload };
if (lodash.isEqual(a, { key: 1 })) {
a = {
"key.something": { anotherKey: "abc" }
};
return a;
但我认为我目前使用的方法不够有效,因为后面的 if 太多了。那么我如何才能真正获得键值,然后根据键值对其进行排序,然后像上面一样替换它?
感谢您的帮助??
答案 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);