首页 > 解决方案 > 根据数组更改对象值

问题描述

我正在尝试将选定日期的数组转换为一个对象,有条件地将选定日期的值更改为 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
}

我知道我必须返回值,但我不知道如何保持与对象相同的格式。

标签: reactjs

解决方案


问题是您要返回key = 1inside 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)


推荐阅读