Entonces, tengo esta función que realiza algunos cálculos y devuelve 6 valores en un objeto. Pero en la página A, solo quiero que calcule y devuelva los primeros 3 valores. En la página B, quiero que devuelva todos los valores.
Quiero evitar el uso de la comparación de cadenas y quería hacer uso del curry.
Los valores que se calculan dependen unos de otros. Por ejemplo, value3 usa value2 para calcular. value4 usa value1 para calcular.
export const transformMeasurementStats = (data: Data[]) => { const result = data.map((item) => { if (item.measurementSamples) { //All these calculations are dependent on one another. // eg value3 uses value2 to calculate and so on. const value1 = //some calculation const value2 = //some calculation const value3 = //some calculation const value4 = //some calculation const value5 = //some calculation const value6 = //some calculation return { value1, value2, value3, value4, value5, value6}; } }); return result;};
Si está seguro de que desea implementarlo mediante curry, a continuación se muestra una forma de hacerlo funcionar:
const transformMeasurementStats = (num) => (data) => { const result = data.map((item) => { if (item.measurementSamples) { //All these calculations are dependent on one another. // eg value3 uses value2 to calculate and so on. const value1 = "1"; const value2 = "2"; const value3 = "3"; const value4 = "4"; const value5 = "5"; const value6 = "6"; return num === 3 ? { value1, value2, value3 } : { value1, value2, value3, value4, value5, value6 }; } }); return result; }; const data = [{ measurementSamples: true }]; console.log(transformMeasurementStats(3)(data)); console.log(transformMeasurementStats()(data)); Devolviendo dinámicamente una cierta cantidad de valores (o todos, si no se proporciona ningún valor de num ):
Podría usar Map en lugar de array si las claves son importantes.
const transformMeasurementStats = (num) => (data) => { const result = data.map((item) => { if (item.measurementSamples) { //All these calculations are dependent on one another. // eg value3 uses value2 to calculate and so on. const values = []; values[0] = "1"; values[1] = "2"; values[2] = "3"; values[3] = "4"; values[4] = "5"; values[5] = "6"; const resultValues = {}; num = num ? num : values.length - 1; for (let i = 1; i <= num; i++) { resultValues[`value${i}`] = values[i]; } return resultValues; } }); return result; }; const data = [{ measurementSamples: true }]; // return all 6 values console.log(transformMeasurementStats()(data)); // return const getFirst3Values = transformMeasurementStats(3); console.log(getFirst3Values(data));Espero eso ayude.