Изменение значения объекта на основе массива

#reactjs

#reactjs

Вопрос:

Я пытаюсь преобразовать массив выбранных дней в объект, чтобы условно изменить значение выбранного дня на 1, но еще не понял этого. Пожалуйста, дайте мне совет, если вы столкнулись с этим.

 let result = {fruits: "orange", colour: "orange"}
const selectedWeekdays = ['monday', 'tuesday']

let defaultDay = {monday: 0, tuesday: 0, wednesday: 0, thursday: 0, friday: 0,saturday: 0, sunday: 0}

days = Object.keys(defaultDay).map(function (key, index) {
      if (selectedWeekdays.includes(key)) {
         return key = 1
      }
})
 
 Expected result: 
result = {
  fruits: "orange",
  colour: "orange",
  monday: 1,
  tuesday: 1,
  wednesday: 0,
  thursday: 0,
  friday: 0,
  saturday: 0,
  sunday: 0
}

 

Я знаю, что мне нужно возвращать значение, но я не знаю, как сохранить тот же формат, что и у объекта.

Ответ №1:

Проблема в том, что вы возвращаете key = 1 inside map , что приводит [1, 1, 1, ....] к таким числам.

возвращаемый ключ = 1 -> который возвращает 1

Вы можете попробовать любое из этих решений.

 const result = {fruits: "orange", colour: "orange"}
const selectedWeekdays = ['monday', 'tuesday']

const defaultDay = { monday: 0, tuesday: 0, wednesday: 0, thursday: 0, friday: 0,saturday: 0, sunday: 0 }

selectedWeekdays.forEach(day => {
   if (defaultDay[day] !== undefined) {
       defaultDay[day] = 1
   }
})

const finalResult = { ...result, ...defaultDay }

console.log(finalResult) 

 const result = {fruits: "orange", colour: "orange"}
const selectedWeekdays = ['monday', 'tuesday']

const defaultDay = { monday: 0, tuesday: 0, wednesday: 0, thursday: 0, friday: 0,saturday: 0, sunday: 0 }

for (const day in defaultDay) {
  result[day] = defaultDay[day]
  if (selectedWeekdays.includes(day)) {
    result[day] = 1
  }
}

console.log(result)