如何将数组内的对象和每个对象相乘,获取一个或多个键并减少它们的值?

Posted

技术标签:

【中文标题】如何将数组内的对象和每个对象相乘,获取一个或多个键并减少它们的值?【英文标题】:How to multiply objects inside an array and for each object, taking one or multiple keys and decrease their values? 【发布时间】:2021-11-17 21:01:28 【问题描述】:

我有这个数组:

const disabledDays = [
       
         year: selectedDay.year,
         month: selectedDay.month,
         day: selectedDay.day -1
       
     ];

我会将它作为组件内部的道具传递:

 <DatePicker
          value=selectedDayTwo
          onChange=setSelectedDayTwo
          locale=myCustomLocale // custom locale object
          shouldHighlightWeekends
          formatInputText=formatInputValueTwo // format value
          calendarTodayClassName="custom-today-day" // also this
          calendarClassName="custom-calendar" // and this
          colorPrimary="rgba(4, 173, 147, 255)" // added this
          disabledDays=disabledDays // here we pass them      <-    LOOOOK HERE
          onDisabledDayError=handleDisabledSelect // handle error
        />

第一个问题:问题是当前 disabledDays 及其第一个对象正在禁用选定日期的前一天,其 day: selectedDay.day -1为了在所选日期前一天禁用,我必须在 disabledDays 内创建另一个对象并执行 day: selectedDay.day -2 do day: selectedDay.day -3 .... 等等等等。

第二个问题:所以另一个问题是我不能只做: selectedDay.day -1000000 或无限。此外,如果我确实遵循为每一天创建一个对象的方法,那么一切都受所选日期的限制。因此,例如,如果所选日期是 1 月 1 日,则 day: selectedDay.day -1 将不起作用,因为我还必须记住相应地减去月份和年份.

第三个问题:如果我这样做:(按照 1 月 1 日的示例)月份:selectedDay.month -1,并且 天: selectedDay.day -1 它将花费 12 月,但这一天又不会起作用,因为会是 12 月 1 日 - 1 不起作用,因为看不到 11 月。

不确定是否有意义,但似乎唯一的策略是在对象中手动应用/添加日期。我正在考虑是否有一种动态方法可以通过将数组中的对象和每个对象相乘,获取一个或多个键,并根据所选日期相应地减小它们的值。任何线索将不胜感激。我正在使用这个library

【问题讨论】:

您能否提供您用于 DatePicker 的库的链接或名称? 【参考方案1】:

如果我错了,让我重新表述你的问题并纠正我。

使用在所选日期之前禁用所有日期 REACT-MODERN-CALENDAR-DATEPICKER 组件。

根据文档,这可以通过为 DatePicker 组件设置 minimumDate 来实现。

一个简单的实现如下

import "react-modern-calendar-datepicker/lib/DatePicker.css";
import DatePicker from "react-modern-calendar-datepicker";
import  useEffect, useState  from "react";

export default function App() 
  const [selectedDay, setSelectedDay] = useState(null);
  const [minDay, setMinDay] = useState([]);

  useEffect(() => 
    if (selectedDay) 
      setMinDay(selectedDay);
    
  , [selectedDay]);

  return (
    <div className="App">
      <DatePicker
        value=selectedDay
        onChange=setSelectedDay
        inputPlaceholder="Select a day"
        shouldHighlightWeekends
        minimumDate=minDay
      />
    </div>
  );

如果您选择 2021 年 9 月 22 日,则 2021 年 9 月 22 日之前的所有日子都将被禁用。

参考:Minimum and Maximum Date

【讨论】:

非常感谢它的工作:))

以上是关于如何将数组内的对象和每个对象相乘,获取一个或多个键并减少它们的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从数组中获取相乘的数组键的总和

如果不存在,Mongoose会将多个对象添加到数组中

如果不存在,Mongoose 将多个对象添加到数组

如果在 Gatsby 中布尔键匹配 true,则从对象内的对象数组中获取项目 - Graphql

展平数组内的对象

Laravel - 根据键值删除数组内的对象 - array_filter