Вы можете использовать lodash _.flow()
для создания функции.Используйте _.map()
с _.overArgs()
, чтобы создать функцию, которая разделяет значения, отформатирует ключ и затем преобразует их в массив пар, используя _.unzip()
, например [['name', 'x'], ['name', 'y']]
.Перенесите массив массивов с помощью _.unzip()
, чтобы объединить пары разных свойств.Затем используйте _.map()
для итерации и преобразуйте каждый массив пар в объект, используя _.fromPairs()
.
const { flow, partialRight: pr, map, unzip, overArgs, times, size, constant, split, fromPairs } = _
const keysMap = new Map([['BPContName', 'name'], ['BPContEmail', 'email'], ['BPContPWID', 'pwdid']])
const formatKey = key => keysMap.get(key)
const splitVals = pr(split, ';')
const fn = flow(
pr(map, overArgs(
(vals, k) => unzip([vals, times(size(vals), constant(k))]),
[splitVals, formatKey])
),
unzip, // transpose
pr(map, fromPairs) // convert each pairs array to object
)
const data = {
"BPContName":"aName;bName;cName",
"BPContEmail":"aEmail;bEmail;cEmail",
"BPContPWID":"aPWID;bPWID;cPWID"
}
const results = fn(data)
console.log(results)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>