interface IJoinedData {
    [key: string]: any;
}
export function associativeArray(arr1: IJoinedData[], arr2: IJoinedData[], key1: string, key2: string, prefixKey = '$'): IJoinedData[] {
    let arr2Map: IJoinedData = {};
    for (let i = 0; i < arr2.length; i++) {
        arr2Map[arr2[i][key2]] = arr2[i];
    }

    let result = arr1.map((item) => {
        let newItem = item;
        let user = arr2Map[item[key1]];
        if(user) {
            for(let key in user) {
                if(key === key2) continue;
                newItem[prefixKey + key] = user[key];
            }
        }
        return newItem;
    });
    return result;
}

