【问题标题】:Issue filter and using Object.entries问题过滤器和使用 Object.entries
【发布时间】:2019-04-18 19:23:35
【问题描述】:

我有以下问题。我有一个代码,如果我把它单独链接 .filters 它可以工作,如果我单独测试代码,但是当我组合它们时,即使值返回 true,它们也不会被返回,所以我想我不是在ifs 内正确应用returns

这行不通

    const FILTERED_DATA = this.filteredProjects.filter(o => {
      Object.entries(FORM_VALUES).every(([k, v]) => {
        if (isDate(sC) || isDate(eC)) {
          if (this.dateRangeValidator(sC, eC, o.created)) {
            return v === "" || o[k] === v || v === 0 || v === "Invalid Date";
          }
        } else if (isDate(sM) || isDate(eM)) {
          if (this.dateRangeValidator(sM, eM, o.modified)) {
            return v === "" || o[k] === v || v === 0 || v === "Invalid Date";
          }
        } else {
          return true;
        }
      });
    });

有效

    const FILTERED_DATA = this.filteredProjects
      .filter(o => {
        if (isDate(sC) || isDate(eC)) {
          return this.dateRangeValidator(sC, eC, o.created);
        } else if (isDate(sM) || isDate(eM)) {
          return this.dateRangeValidator(sM, eM, o.modified);
        } else {
          return true;
        }
      })
      .filter(o =>
        Object.entries(FORM_VALUES).every(
          ([k, v]) => v === "" || o[k] === v || v === 0 || v === "Invalid Date"
        )
      );

【问题讨论】:

    标签: javascript json filter


    【解决方案1】:

    你需要return

    const FILTERED_DATA = this.filteredProjects
            .filter(o => {
                return Object.entries(FORM_VALUES)
    //          ^^^^^^
    

    并在最后省略 return true

    【讨论】:

    • 当我这样做时,它返回了整个数组,就像它没有过滤一样
    • 如有必要,我可以创建一个 stackbliz。我一直试图解决这个问题几个小时。感谢您的帮助。
    • 也许你需要删除最后一个return true
    • 在看到您的评论之前我才知道这一点。哈哈哈我太笨了!非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2021-11-20
    • 2012-12-08
    • 2011-08-04
    • 2010-09-20
    • 2011-09-28
    相关资源
    最近更新 更多