tratando de agregar múltiples condiciones usando el operador ternario, los valores son falsos cada vez ¿cuál es el problema con el código a continuación? basado en el valor del indicador isActive debe establecerse
índice.js
const _res: any = {} _res.memberPreferences.channels.EM = (details.memberPreferences.channels[0].channelType === "EM" && details.memberPreferences.channels[0].isActive === "true") ? true : false; _res.memberPreferences.channels.SMS = (details.memberPreferences.channels[0].channelType === "SMS" && details.memberPreferences.channels[0].isActive === "true") ? true : falsedatos
así es como se devuelven los datos
{ "details": { "memberPreferences": { "channels": [{ "channelType": "EM", "isActive": "true" }, { "channelType": "SMS", "isActive": "false" } ] } } }No necesita ternario, solo el resultado de la comparación.
const details = { memberPreferences: { channels: [{ channelType: "EM", isActive: "true" }, { channelType: "SMS", isActive: "false" }] } }, _res = { memberPreferences: { channels: {} } }, target = _res.memberPreferences.channels; details.memberPreferences.channels.forEach(({ channelType, isActive }) => { target[channelType] = isActive === "true"; }); console.log(_res);En realidad, no necesita un operador ternario aquí. La condición en sí misma devuelve true o false . Además, es bueno crear variables separadas para la condición details.memberPreferences.channels details.memberPreferences.channels[0] y channel_zero.isActive == "true" . Y aquí no hay necesidad de usar === over == . Así que el index.js debería verse así:
const _res: any = {}; const channel_zero: any = details.memberPreferences.channels[0]; const is_active: boolean = channel_zero.isActive == "true"; _res.memberPreferences.channels.EM = (channel_zero.channelType == "EM" && is_active); _res.memberPreferences.channels.SMS = (channel_zero.channelType == "SMS" && is_active) ;