数组或数组对象比较
every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔
数组对象:

取交集

  1. let a=[{id:1,a:123,b:1234},{id:2,a:123,b:1234}];
  2. let b=[{id:1,a:123,b:1234},{id:2,a:123,b:1234},{id:3,a:123,b:1234},{id:4,a:123,b:1234}];
  3. let arr = [...b].filter(x => [...a].some(y => y.id === x.id));
  4. console.log('arr',arr)

取差集:

  1. let a=[{id:1,a:123,b:1234},{id:2,a:123,b:1234}];
  2. let b=[{id:1,a:123,b:1234},{id:2,a:123,b:1234},{id:3,a:123,b:1234},{id:4,a:123,b:1234}];
  3. let arr = [...b].filter(x => [...a].every(y => y.id !== x.id));
  4. console.log('arr',arr);

取并集:

  1. let a=new Set([1,2,3,4,5]);
  2. let b=new Set([1,2,3,4,5,6,7,8,9]);
  3. let arr = Array.from(new Set([...a, ...b]));
  4. console.log('arr',arr);

数组包含关系:

  1. var a = [1, 2, 5, 7, 3];
  2. var b = [1, 7, 3];
  3. function isContained(aa, bb) {
  4. if(!(aa instanceof Array) || !(bb instanceof Array) || ((aa.length < bb.length))) {
  5. return false;
  6. }
  7. for (var i = 0; i < bb.length; i++) {
  8. var flag = false;
  9. for(var j = 0; j < aa.length; j++){
  10. if(a[j] == bb[i]){
  11. flag = true;
  12. break;
  13. }
  14. }
  15. if(flag == false){
  16. return flag;
  17. }
  18. }
  19. return true;
  20. }
  21. var c = isContained(a, b);
  22. console.log(c);