Lo que quiero hacer es fusionar 3 cadenas de acuerdo con la secuencia en ambas listas.
Por ejemplo, en una matriz tengo estos 3 elementos que tienen sus datos en forma de cadena :
1: { permissionIDList: "1,2,3" permissionNameList: "Admin Role,Admin Role,Bulletin Board" permissionTypeList: "view,edit,view" }Quiero fusionar las listas y mapearlas en valor y etiqueta para que se convierta en:
0: {value: 1, label: Admin Role - view} 1: {value: 2, label: Admin Role - edit} 2: {value: 3, label: Bulletin Board - view}Implementación Array.reduce
const data = { permissionIDList: "1,2,3", permissionNameList: "Admin Role,Admin Role,Bulletin Board", permissionTypeList: "view,edit,view", }; const [permissionIDList, permissionNameList, permissionTypeList] = [data.permissionIDList.split(','), data.permissionNameList.split(','), data.permissionTypeList.split(',')]; const merger = permissionIDList.reduce((acc, curr, index) => { acc[curr] = { value: curr, label: `${permissionNameList[index]} - ${permissionTypeList[index]}` } return acc; }, {}); console.log(merger); Si su respuesta de datos final es una matriz, puede utilizar Array.map
const data = { permissionIDList: "1,2,3", permissionNameList: "Admin Role,Admin Role,Bulletin Board", permissionTypeList: "view,edit,view", }; const [permissionIDList, permissionNameList, permissionTypeList] = [data.permissionIDList.split(','), data.permissionNameList.split(','), data.permissionTypeList.split(',')] const merger = permissionIDList.map((node, index) => ({ value: node, label: `${permissionNameList[index]} - ${permissionTypeList[index]}` })); console.log(merger);Este código te da lo que necesitas:
const strings = { permissionIDList: "1,2,3", permissionNameList: "Admin Role,Admin Role,Bulletin Board", permissionTypeList: "view,edit,view" } const permissionIDList = strings.permissionIDList.split(','); const permissionNameList = strings.permissionNameList.split(','); const permissionTypeList = strings.permissionTypeList.split(','); const result = []; for(let i = 0; i < permissionIDList.length; i++){ result.push({ value: permissionIDList[i], label: permissionNameList[i] + " - " + permissionTypeList[i] }); } console.log(result);Otra implementación podría ser:
const value = { permissionIDList: "1,2,3", permissionNameList: "Admin Role,Admin Role,Bulletin Board", permissionTypeList: "view,edit,view", } Object.entries(value).map((item,i) => { const permissionNameList = value['permissionNameList'].split(','[i]; const permissionTypeList = value['permissionTypeList'].split(','[i]; const permissionIDList = value['permissionIDList'].split(',')[i]; return { value: permissionIDList, label: `${permissionNameList} - ${permissionTypeList}` } })