javascript - 在条件下将密钥转换为对?
问题描述
我有一个通用对象和确定配对键的对象:
const obj = {
key1: 1,
key2: 2,
key3: 3,
};
const pairs = {
'key1:key3': 666,
};
在这种情况下,生成的对象将是:
const result = {
'key1:key3': 666,
key2: 2
};
如果源对象中存在对中的两个键,则对具有更高的优先级,然后采用与值配对,否则采用单个键/值。例如另一种情况:
const obj = {
key1: 1,
key2: 2,
key4: 3,
};
const pairs = {
'key1:key3': 666,
};
const result = {
key1: 1,
key2: 2,
key4: 3,
};
// same as obj, because no key1 and key3 is present
我怎样才能用 lodash 实现这些逻辑?
解决方案
此解决方案并不完整,但您可以扩展此逻辑来解决您的问题。
/** const obj = {
key1: 1,
key2: 2,
key4: 3,
};
const pairs = {
'key1:key3': 666,
};
**/
const obj = {
key1: 1,
key2: 2,
key3: 3,
};
const pairs = {
'key1:key3': 666,
};
const pairKeys = Object.keys(pairs);
pairKeys.forEach((key) => {
const keys = key.split(':');
const isAllKeysPresent = keys.every(k => {
return !!obj[k]; // returns boolean
});
const objCopy = { ...obj
};
if (isAllKeysPresent) {
keys.forEach(k => {
delete objCopy[k];
})
console.log({ ...pairs,
...objCopy
})
} else {
console.log(objCopy)
}
})
推荐阅读
- visual-studio - 在 React Native 中创建下拉菜单的最佳方法
- firebase - 在另一台服务器上通过 Firebase 功能进行身份验证的最佳做法是什么?
- python - 让 Alexa Skill 播放音频
- python - 相同的打印语句为排序算法(插入排序)提供不同的输出
- android-studio - 在什么情况下监听器参数是强制性的?
- flutter - 我们如何在颤动中绘制不同半径的饼图?
- python - 需要帮助创建计算器,无法导入 sympy
- python - Django框架上的分类广告网站
- java - Java中的reentrantlock如何保证内存可见性?
- c++ - C++在编译时获取函数地址并对其进行操作