lodash两个对象比较并返回不一样的属性
时间: 2024-02-17 15:02:06 浏览: 20
如果您想比较两个lodash对象,并返回这两个对象中不同的属性,可以使用`_.reduce()`方法和`_.difference()`方法。
下面是一个示例代码:
```
const _ = require('lodash');
const obj1 = { name: 'John', age: 25, city: 'New York' };
const obj2 = { name: 'John', age: 30, country: 'USA' };
const diffProps = (obj1, obj2) => {
const keys = _.union(_.keys(obj1), _.keys(obj2));
return _.reduce(keys, (result, key) => {
if (!_.isEqual(obj1[key], obj2[key])) {
result.push(key);
}
return result;
}, []);
};
console.log(diffProps(obj1, obj2)); // ['age', 'city', 'country']
```
在上面的代码中,`_.union()`方法用于获取两个对象的所有属性名,`_.reduce()`方法逐个比较两个对象中的属性值,如果属性值不相等,则将属性名添加到结果数组中。最后使用`_.difference()`方法获取结果数组中不同的属性名。
需要注意的是,如果两个对象中有数组或对象类型的属性值,则`_.isEqual()`方法可能会递归比较这些属性值,导致栈溢出错误。如果您需要比较数组或对象类型的属性值,请使用递归方法或其他工具库。