首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有匹配给定日期字符串的筛选对象

具有匹配给定日期字符串的筛选对象
EN

Stack Overflow用户
提问于 2022-10-04 18:08:44
回答 1查看 92关注 0票数 1

我有一个包含任务名、createdAt字段的对象数组.

我下个星期的日子越来越短,我想要下个星期的任务。

我已经尝试了下面的代码,但是它产生了错误:

期望一个赋值或函数调用,而不是看到一个表达式

代码语言:javascript
复制
const nextWeekDays = (key: string): any => {
switch (key) {
  case 'week-next':
    const startNextWeek = moment().add(1, 'weeks').startOf('isoWeek');
    const endNextWeek = moment().add(1, 'weeks').endOf('isoWeek');
    let date: string[] = [];

    for (
      var m = moment(startNextWeek);
      m.isBefore(endNextWeek);
      m.add(1, 'days')
    ) {
      date.push(m.format('DD-MM-YYYY'));
    }

    return date;

要获得任务长度的代码:

代码语言:javascript
复制
 case 'week-next':
    let dates = veri("week-next")
    return props.dealspaceTaskList.filter(
      dt => dates.includes((t:any) => {t == dt.createdAt})
    ).length;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-05 01:04:55

Array.prototype.includes的语法是myArray.includes(searchElement),它不使用函数参数(除非数组实际上是一个函数列表,在这种情况下,您可以通过函数引用进行搜索)。

因此,在你的例子中,TypeScript指出了这个差异:

代码语言:javascript
复制
let dates = ["01-02-2022", "02-02-2022"]

const result = [{
    createdAt: "03-02-2022"
}, {
    createdAt: "04-02-2022"
}].filter(
    dt => dates.includes((t: any) => { t == dt.createdAt }) // Error: Argument of type '(t: any) => void' is not assignable to parameter of type 'string'.
    //                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
).length;

您只需要传递值,而不是函数形式:

代码语言:javascript
复制
const result2 = [{
    createdAt: "03-02-2022"
}, {
    createdAt: "04-02-2022"
}].filter(
    dt => dates.includes(dt.createdAt) // Okay
).length;

操场连接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73951957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档