创建一个具有唯一array
值的数组,每个值不包含在其他给定的数组中。(注:即创建一个新数组,这个数组中的值,为第一个数字(array
参数)排除了给定数组中的值。)该方法使用SameValueZero
做相等比较。结果值的顺序是由第一个数组中的顺序确定
例子:
_.difference([3, 2, 1], [4, 2]);
// => [3, 1]
根据loash官网的chunk方法自己写一个同样功能的方法
//返回一个过滤值后的新数组
// _.difference([3, 2, 1], [4, 2]);
// => [3, 1]
function difference(nums1,nums2) {
let newSet = new Set(nums1);
console.log(newSet,'set');
for(num of nums2) { ////判断是否有这个值,如有就删除,
if(newSet.has(num)) {
newSet.delete(num);
}
}
return Array.from(newSet);
}
console.log(difference([3,2,1],[4,2]))
上面的例子把自身相同的值也给过滤掉了,进一步改正
//indexOf查询元素在数组中的索引,如果没有搜索到则返回-1
function difference(nums1,nums2) {
if(nums1.lenght === 0) {
return [];
} else if(nums2.lenght === 0) {
return [...nums1]
} else {
return nums1.filter(item => nums2.indexOf(item) === -1)
}
}
console.log(difference([1,2,3,4,5,5],[2,3,4]))
上面的例子虽然能实现,但是这个只支持两个数组参数,官方的_.difference(array, [values]),中 ( [values] (...Array): 排除的值)支持多个数组的,还需进一步优化
网友评论