index.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // 集合
  2. interface ObjType {
  3. [key: string]: any;
  4. }
  5. /**
  6. * 多个对象合并相同的属性
  7. * @param a 合并之后的对象
  8. * @param b 把相同的属性的value 值赋值给a对象
  9. */
  10. export function mergeObj(a: ObjType, ...rest: ObjType[]): void {
  11. Object.keys(a).forEach((key) => {
  12. rest.forEach((param) => {
  13. if (Reflect.has(param, key)) {
  14. a[key] = param[key];
  15. }
  16. });
  17. });
  18. }
  19. /**
  20. * 合并两个对象
  21. * @param a
  22. * @param b
  23. * @param callBack
  24. */
  25. export function mergeTwoObj(a: any, b: any, callBack?: Function) {
  26. const obj: ObjType = {};
  27. Object.keys(a).forEach((el) => {
  28. const key = el.toLocaleLowerCase();
  29. if (Reflect.has(b, key)) {
  30. obj[el] = b[key];
  31. } else {
  32. console.warn(`为找到对应的key:${key}`);
  33. callBack && callBack(el)
  34. }
  35. });
  36. Object.assign(a, obj);
  37. }
  38. /**
  39. * 对象转二进制数组
  40. * @param data
  41. * @returns
  42. */
  43. export function objectToUint8Array(data: object) {
  44. const rawData: string = JSON.stringify(data);
  45. const outputArray = new Uint8Array(rawData.length);
  46. for (var i = 0; i < rawData.length; ++i) {
  47. outputArray[i] = rawData.charCodeAt(i);
  48. }
  49. return outputArray;
  50. }
  51. // export function objectToUint8Array(data: object): Uint8Array {
  52. // const encode = encodeURI(JSON.stringify(data));// 对字符串进行编码
  53. // debugger
  54. // const base64String = btoa(encode);// 对编码的字符串转化base64
  55. // const padding = '='.repeat((4 - base64String.length % 4) % 4);
  56. // // const base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/');
  57. // // const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');
  58. // const base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/');
  59. // const rawData = window.atob(base64);
  60. // const outputArray = new Uint8Array(rawData.length);
  61. // for (let i = 0; i < rawData.length; ++i) {
  62. // outputArray[i] = rawData.charCodeAt(i);
  63. // }
  64. // return outputArray;
  65. // }