ObjectUtil.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. export class ObjectUtil {
  2. /**
  3. * 判断指定的值是否为对象
  4. * @param value 值
  5. */
  6. static isObject(value: any) {
  7. return Object.prototype.toString.call(value) === '[object Object]';
  8. }
  9. /**
  10. * 深拷贝
  11. * @param target 目标
  12. */
  13. static deepCopy(target: any) {
  14. if (!target || typeof target !== 'object') {
  15. return target;
  16. }
  17. let result: any = null;
  18. if (target instanceof Date) {
  19. result = new Date();
  20. result.setTime(target.getTime());
  21. return result;
  22. }
  23. if (target instanceof Array) {
  24. result = [];
  25. for (let i = 0, length = target.length; i < length; ++i) {
  26. result[i] = this.deepCopy(target[i]);
  27. }
  28. return result;
  29. }
  30. if (target instanceof Object) {
  31. result = {};
  32. for (const key in target) {
  33. if (target.hasOwnProperty(key)) {
  34. result[key] = this.deepCopy(target[key]);
  35. }
  36. }
  37. return result;
  38. }
  39. }
  40. /**
  41. * 拷贝对象
  42. * @param target 目标
  43. */
  44. static copy(target: object) {
  45. return JSON.parse(JSON.stringify(target));
  46. }
  47. static mapToObject(data: any) {
  48. let obj = {}
  49. if (data instanceof Map) {
  50. for (let [key, value] of data) {
  51. if (value instanceof Map) {
  52. let temp = {}
  53. for (let [k, v] of value) {
  54. temp[k] = v;
  55. }
  56. obj[key] = temp;
  57. } else if (value instanceof Array) {
  58. obj[key] = value;
  59. } else if (typeof value === "object") {
  60. let newObj = this.mapToObject(value)
  61. obj[key] = newObj
  62. } else {
  63. obj[key] = value
  64. }
  65. }
  66. } else {
  67. for (let key in data) {
  68. if (data[key] instanceof Map) {
  69. let temp = {}
  70. for (let [k, v] of data[key]) {
  71. temp[k] = v;
  72. }
  73. obj[key] = temp
  74. } else if (typeof data[key] === "number" || typeof data[key] === "string" || data[key] instanceof Array || typeof data[key] === "boolean") {
  75. obj[key] = data[key];
  76. } else if (typeof data[key] === "object") {
  77. obj = this.mapToObject(data[key])
  78. }
  79. else if (typeof data === "object") {
  80. obj = data
  81. break
  82. }
  83. else {
  84. obj[key] = data[key]
  85. }
  86. }
  87. }
  88. return obj
  89. }
  90. }