如何将 DRY 概念应用于重复的数组映射任务?

Jac*_*asi 1 javascript arrays mapping dry data-structures

鉴于以下代码...

// last 7 days data from db ...

let last7Days =
  result.map((data) => data._id).slice(1).slice(-7);

let last7daysIncome =
  result.map((data) => data.totalIncomeAmount).slice(1).slice(-7);

let last7daysAvgIncome =
  result.map((data)=> data.avrageIncome).slice(1).slice(-7);

let last7daysPatientionsCount =
  result.map((data)=> data.PatientionsCount).slice(1).slice(-7);

let last7disease =
  result.map((data)=>data.diseaseArr).slice(1).slice(-7);
Run Code Online (Sandbox Code Playgroud)

...如何使用 JavaScript 中的DRY 概念D on't Repeat Y ourself )来简化这段代码?

Mad*_*sen 5

创建一个函数,发送要提取的字段的参数,甚至是要回溯的天数:

function lastDays(result, field, days) {
  return result.slice(days).map((data)=>data[field]);  
}
function lastSevenDays(result, field) {
  return lastDays(result, field, -7);
}

let last7Days = lastSevenDays(result, "_id")
let last7daysIncome = lastSevenDays(result, "totalIncomeAmount")
let last7daysAvgIncome  =lastSevenDays(result, "avrageIncome")
let last7daysPatientionsCount  = lastSevenDays(result, "PatientionsCount")
let last7disease = lastSevenDays(result, "diseaseArr")
Run Code Online (Sandbox Code Playgroud)