Перемещение объектов с помощью определенных ключей в массив и переименование полей

#javascript #arrays #json #typescript #object

Вопрос:

Как я могу переместить объекты с «Рабочим днем» в массив и заменить «Понедельник», «Вторник» … на «dayIndex», начинающийся с «0» в JavaScript/TypeScript?

Выходной ток:

 [
  {
    'Calendar Name': 'Standard',
    'Valid From': 44197,
    'Valid To': 44561,
    'Use Holidays': 'yes',
    'Working Day': 'Monday',
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  {
    'Working Day': 'Tuesday',
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  {
    'Working Day': 'Wednesday',
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  {
    'Working Day': 'Thursday',
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  {
    'Working Day': 'Friday',
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  { 'Working Day': 'Saturday', Start: '-', End: '-' },
  { 'Working Day': 'Sunday', Start: '-', End: '-' }
]
 

Желаемый JSON:

 {
 "name": "Standard",
 "validFrom": "2021-01-01T00:00:00.000Z",
 "validTo": "2021-12-31T00:00:00.000Z",
 "useHolidays": true,
 "workingDays": [
  {
    "dayIndex": 0,
    "dayStart": "8:00",
    "dayEnd": "20:00"
  },
  {
    "dayIndex": 1,
    "dayStart": "8:00",
    "dayEnd": "20:00"
  },
  ...
  {
    "dayIndex": 6,
    "dayStart": "-",
    "dayEnd": "-"
  },
 ],
 "uploadedBy": "foo"
}
 

Комментарии:

1. Ооочень, где код проблемы-который вы пытались написать .. Себя?

Ответ №1:

 const array = [
  {
    "Calendar Name": "Standard",
    "Valid From": 44197,
    "Valid To": 44561,
    "Use Holidays": "yes",
    "Working Day": "Monday",
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  {
    "Working Day": "Tuesday",
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  {
    "Working Day": "Wednesday",
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  {
    "Working Day": "Thursday",
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  {
    "Working Day": "Friday",
    Start: 0.3333333333333333,
    End: 0.8333333333333334
  },
  { "Working Day": "Saturday", Start: "-", End: "-" },
  { "Working Day": "Sunday", Start: "-", End: "-" }
];

let customObject = {
  name: "",
  validFrom: "",
  validTo: "",
  useHolidays: true,
  workingDays: []
};

array.forEach((t, index) => {
  if (index === 0) {
    customObject.name = t["Calendar Name"];
    customObject.validFrom = t["Valid From"];
    customObject.validTo = t["Valid To"];
    customObject.useHolidays = t["Use Holidays"];
    customObject.uploadedBy = "foo";
  }
  customObject.workingDays.push({
    dayIndex: index,
    dayStart: t.Start,
    dayEnd: t.End
  });
});

console.log(customObject)