首页 > 解决方案 > 如何用特定值替换数组并添加到特定索引中?

问题描述

以下是代码片段::

  let dayOfWeek=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
  let officeHoursList: [
{dayOfWeek: "Wednesday", beginHour: "08:30 AM", endHour: "04:30 PM"}]

在这里,我需要比较两个数组,如果 dayOfWeek 不存在于 officeHoursList 中,那么它将剩余的 dayOfWeek 添加到 officeHoursList 中。

例如,在这种情况下,最终输出将是

officeHoursList: [
{dayOfWeek: "Monday", beginHour: "00:00 AM", endHour: "00:00 PM"},
{dayOfWeek: "Tuesday", beginHour: "00:00 AM", endHour: "00:00 PM"},
{dayOfWeek: "Wednesday", beginHour: "08:30 AM", endHour: "04:30 PM"},
.
.
.
{dayOfWeek: "Sunday", beginHour: "00:00 AM", endHour: "00:00 PM"}]

这里数组 officeHoursList 的值是动态的,在这种情况下它只包含星期三,但它可以是从星期一到星期日的任何动态值。

提前致谢

标签: javascriptarraysdatetime

解决方案


使用方法reduce()_filter()

let dayOfWeek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

let officeHoursList = [{dayOfWeek: "Wednesday", beginHour: "08:30 AM", endHour: "04:30 PM"}]

let result = dayOfWeek.reduce((acc, day) => {

  let officeHour = officeHoursList.filter(officeHour => officeHour.dayOfWeek === day)
  
  if (officeHour.length) {
    acc.push(officeHour)
  } else {
    acc.push({dayOfWeek: day, beginHour: "00:00 AM", endHour: "00:00 PM"})
  }
  
  return acc;
}, [])

console.log(result)


推荐阅读