// 集合 interface ObjType { [key: string]: any; } /** * 多个对象合并相同的属性 * @param a 合并之后的对象 * @param b 把相同的属性的value 值赋值给a对象 */ export function mergeObj(a: ObjType, ...rest: ObjType[]): void { Object.keys(a).forEach((key) => { rest.forEach((param) => { if (Reflect.has(param, key)) { a[key] = param[key]; } }); }); } /** * 合并两个对象 * @param a * @param b * @param callBack */ export function mergeTwoObj(a: any, b: any, callBack?: Function) { const obj: ObjType = {}; Object.keys(a).forEach((el) => { const key = el.toLocaleLowerCase(); if (Reflect.has(b, key)) { obj[el] = b[key]; } else { console.warn(`为找到对应的key:${key}`); callBack && callBack(el) } }); Object.assign(a, obj); } /** * 对象转二进制数组 * @param data * @returns */ export function objectToUint8Array(data: object) { const rawData: string = JSON.stringify(data); const outputArray = new Uint8Array(rawData.length); for (var i = 0; i < rawData.length; ++i) { outputArray[i] = rawData.charCodeAt(i); } return outputArray; } // export function objectToUint8Array(data: object): Uint8Array { // const encode = encodeURI(JSON.stringify(data));// 对字符串进行编码 // debugger // const base64String = btoa(encode);// 对编码的字符串转化base64 // const padding = '='.repeat((4 - base64String.length % 4) % 4); // // const base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/'); // // const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/'); // const base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/'); // const rawData = window.atob(base64); // const outputArray = new Uint8Array(rawData.length); // for (let i = 0; i < rawData.length; ++i) { // outputArray[i] = rawData.charCodeAt(i); // } // return outputArray; // }