lodash difference使用比较两个对像
时间: 2024-02-25 14:53:07 浏览: 21
lodash的difference方法用于比较两个数组之间的差异。它返回一个新数组,其中包含在第一个数组中但不在第二个数组中的元素。具体用法如下:
```javascript
_.difference(array, [values])
```
其中,array是要比较的数组,values是一个可选参数,可以是一个数组或是多个单独的值。
例如,比较两个数组之间的差异:
```javascript
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = _.difference(arr1, arr2);
console.log(diff); // [1, 2]
```
在上面的例子中,diff数组包含了在arr1中但不在arr2中的元素1和2。如果我们传递第二个参数,它会从结果中排除指定的值:
```javascript
const diff = _.difference(arr1, [2, 4]);
console.log(diff); // [1, 3, 5]
```
在上面的例子中,diff数组包含了在arr1中但不是2或4的元素1、3和5。
相关问题
lodash两个对象比较并返回不一样的属性
如果您想比较两个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()`方法可能会递归比较这些属性值,导致栈溢出错误。如果您需要比较数组或对象类型的属性值,请使用递归方法或其他工具库。
每天一个lodash方法-differenceBy
好的,lodash的differenceBy方法可以用来比较两个数组之间的差异,并且可以指定比较的属性。具体使用方法如下:
首先,在你的项目中安装lodash库:
```
npm install lodash
```
然后在代码中引入lodash库:
```javascript
const _ = require('lodash');
```
接着,我们可以使用differenceBy方法进行数组比较:
```javascript
const arr1 = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }];
const arr2 = [{ 'x': 1 }, { 'x': 2 }];
const result = _.differenceBy(arr1, arr2, 'x');
console.log(result);
// => [{ 'x': 3 }]
```
在上面的例子中,我们比较了arr1和arr2两个数组之间的差异,使用了x属性进行比较,并且返回了arr1中有而arr2中没有的元素。