_.difference(array, [values])
创建一个具有唯一array
值的数组,每个值不包含在其他给定的数组中。(注:即创建一个新数组,这个数组中的值,为第一个数字(array
参数)排除了给定数组中的值。)该方法使用SameValueZero做相等比较。结果值的顺序是由第一个数组中的顺序确定。
_.differenceBy(array, [values], [iteratee=_.identity])
这个方法类似_.difference ,除了它接受一个 iteratee
(注:迭代器), 调用array
和 values
中的每个元素以产生比较的标准。 结果值是从第一数组中选择。iteratee 会调用一个参数:(value)。(注:首先使用迭代器分别迭代array
和 values
中的每个元素,返回的值作为比较值)。
_.differenceWith(array, [values], [comparator])
这个方法类似_.difference ,除了它接受一个 comparator
(注:比较器),它调用比较array
,values
中的元素。 结果值是从第一数组中选择。comparator 调用参数有两个:(arrVal, othVal)。
<template>
<div></div>
</template>
<script>
import _ from "lodash"; // 引入
export default {
data() {
return {};
},
mounted() {
console.log(this.differenceFun());
console.log(this.differenceByFun());
console.log(this.differenceWithFun());
},
methods: {
//1 数组过滤
differenceFun() {
const arr1 = [0, 1, 2, 3, "3", "4", 4]; //要检查的数组
const arr2 = [2, "4"]; //要排除数组
const newArr = _.difference(arr1, arr2);
return newArr;
},
//数组过滤 ,使用一个迭代器 过滤之前先处理
differenceByFun() {
const arr1 = [1.1, 3.6, 5.2]; //
const arr2 = [1.6, 2.3, 3.7]; //
// 两个数组中每个元素经过Math.floor处理后变成[1, 3, 5]和[1, 2, 3],最终对比结果为[5.2]
// [5.2]
const newArr = _.difference(arr1, arr2, Math.floor);
return newArr;
},
differenceWithFun() {
return _.differenceWith([1, 3, 5], [1, 4, 3], this.customCompare);
//[1,3]
},
customCompare(a, b) {
return a - b === 1;
},
},
};
</script>