1.数组去重

  1. let arr = [3, 5, 2, 2, 5, 5];
  2. let setArr = new Set(arr) // 返回set数据结构 Set(3) {3, 5, 2}
  3. //方法一 es6的...解构
  4. let unique1 = [...setArr ]; //去重转数组后 [3,5,2]
  5. //方法二 Array.from()解析类数组为数组
  6. let unique2 = Array.from(setArr ) //去重转数组后 [3,5,2]
  7. //方法三 数组的reduce方法
  8. let arrResult = arr.reduce((pre,cur) =>{
  9. if(!pre.includes(cur)){
  10. pre.push(cur)
  11. }
  12. return pre;
  13. },[])

注1:JavaScript reduce() 方法 注2:JavaScript Array filter() 方法 注3:Array.from() 方法 注4:Set是es6新增的数据结构,似于数组,但它的一大特性就是所有元素都是唯一的,没有重复的值,我们一般称为集合。 注5:Map

2.筛选2个数组的交集

1.数组filter、includes方法

  1. // 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
  2. // 输出: [9,4]
  3. var intersection = function(nums1, nums2) {
  4. return [...new Set(nums1.filter((item)=>nums2.includes(item)))]
  5. };

2.new Set 的 has 方法

  1. let a = new Set([1, 2, 3]);
  2. let b = new Set([4, 3, 2]);
  3. // 并集
  4. let union = new Set([...a, ...b]);
  5. // Set {1, 2, 3, 4}
  6. // 交集
  7. let intersect = new Set([...a].filter(x => b.has(x)));
  8. // set {2, 3}
  9. // (a 相对于 b 的)差集
  10. let difference = new Set([...a].filter(x => !b.has(x)));
  11. // Set {1}

3.数组扁平化