美文网首页
_.difference(array, [values])

_.difference(array, [values])

作者: rainy66 | 来源:发表于2023-03-31 23:19 被阅读0次

创建一个具有唯一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): 排除的值)支持多个数组的,还需进一步优化

相关文章

网友评论

      本文标题:_.difference(array, [values])

      本文链接:https://www.haomeiwen.com/subject/bnhkddtx.html