array.js 870 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /**
  2. * 数组模块方法的扩展
  3. *
  4. * @author lautin
  5. * @created 2019-11-22 15:32:05
  6. */
  7. /**
  8. * 计算数组差值,非变异方法
  9. * @param {array} a
  10. * @param {array} b
  11. */
  12. function differ(a, b) {
  13. // 拷贝原数组,避免变异
  14. const _a = a.slice();
  15. for (let i = 0; i < b.length; i++) {
  16. for (let j = 0; j < _a.length; j++) {
  17. if (_a[j] === b[i]) {
  18. _a.splice(j, 1)
  19. j = j - 1
  20. }
  21. }
  22. }
  23. return _a;
  24. }
  25. // 利用set集合的特性实现数组去重
  26. function unique(arr) {
  27. return [...new Set(arr)]
  28. }
  29. Array.prototype.differ = function (arr) {
  30. return differ(this, arr);
  31. }
  32. Array.prototype.unique = function () {
  33. return unique(this);
  34. }
  35. // 他们都是在webpack初始时加载 默认使用node模块系统,不加default
  36. export default {
  37. differ,
  38. unique,
  39. }