如何在lodash中创建具有隐藏属性的新对象?

马塞洛·拉扎罗尼(Marcelo Lazaroni)

我想使用对象A的属性和对象B的属性值创建一个新对象(不修改任何现有对象),如果该属性存在于对象B中,则该属性不默认为对象A中的值。

它类似于Object.assign({}, a, b)但忽略了第二个参数中没有的所有键。

有什么办法用Lodash做到这一点?

这是我正在寻找的本地JS实现:

function overshadow(oldObj, newObj) {
  return Object.keys(oldObj)
    .reduce((result, key) => {
      result[key] = newObj[key] || oldObj[key];
      return result;
    }, {});
};

a = { one: 1, two: 2 };

b = { one: 'a', three: 'b' };

c = overshadow(a, b);

console.log(c) // { one: "a", two: 2 }

或德罗里

可以_.pick()newObj一起使用Object.keys()_.keys()取其值,仅从oldObj中获取属性:

a = { one: 1, two: 2 };
b = { one: 'a', three: 'b' };

function overshadow(oldObj, newObj) {
  return _.assign({}, oldObj, _.pick(newObj, Object.keys(oldObj)));
}

var result = overshadow(a, b);

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自具有属性的对象数组的 lodash 新对象

如何在VBA中的excel中创建具有文件属性的动态对象列表

如何在具有角注入参数的打字稿中创建新对象

如何在具有填充字段的集合中创建新对象

如何检测具有新属性的对象列表中的更改?

如何使用 lodash 从现有对象创建特定的新对象

如何使用lodash从对象数组中创建具有名称和频率计数的对象

如何在休眠中隐藏对象属性?

如何在Redux中存储具有单独属性的对象

如何在php中动态创建具有计数的对象?

如何创建具有属性的内联对象?

在对象数组中查找具有相同属性的元素并创建新的对象数组

如何在带有窗口的对象中创建新值

当类具有封装的属性时,如何“隐藏类型”对象?

如何创建具有函数的特殊(隐藏)属性的Mock

如何在通讯录数组上映射以生成具有对象和属性的新数组?

如何在具有特定 alt 属性内容的 JS 中隐藏图像?

如何在JavaScript中的另一个对象中查找具有属性的对象

如何添加具有数据库中已有属性的新对象?

如何在C#中使用javascript创建具有属性的简单对象

在lodash中添加对象的新属性

如何创建函数来处理具有受保护属性或私有属性的对象中的对象?

在对象数组中查找具有相同属性的元素并创建一个新的对象数组

如何在具有重复属性名称的对象中获取最大属性值?

如何在MySQL中查询具有对象数组属性的对象?

如何在具有不同构造函数的方法中创建给定对象类型的对象

如何在python中创建与另一个对象具有相同内容的对象?

扩展具有隐藏属性的对象

在javascript中的对象数组中从具有空值的数组创建一个新属性