【问题标题】:What's the best way to rewrite this?重写这个的最好方法是什么?
【发布时间】:2022-02-03 07:06:17
【问题描述】:

我已经编写了搜索查询过滤器,但它对我来说似乎很复杂而且很长,我想还有另一种编写方式。那么你能举出你的例子吗?

return this.myCourses.filter(c => {
    return c?.purchased_course?.title.toLowerCase().startsWith(this.searchQuery) ||
      c?.purchased_course?.user?.first_name.toLowerCase().startsWith(this.searchQuery) ||
      c?.purchased_course?.user?.last_name.toLowerCase().startsWith(this.searchQuery)
  })

【问题讨论】:

  • 如果此代码有效,则不是此问题的地方使用 codereview.stackexchange.com
  • 这样的? this.myCourses.filter(course => [c?.purchased_course?.title, c?.purchased_course?.user?.first_name, c?.purchased_course?.user?.last_name].any(textStartsWith.bind(this.searchQuery))); 辅助函数:function textStartsWith(text) { return typeof text === "string" && text.startsWith(this); }

标签: javascript filter


【解决方案1】:

Object destructuring

从作为函数参数传递的对象中解包字段。

const startsWithQuery = p => p?.toLowerCase().startsWith(this.searchQuery);

return this.myCourses.filter(({purchased_course: {title, user: {first_name, last_name} = {}}}) => [title, first_name, last_name].some(startsWithQuery));

【讨论】:

    猜你喜欢
    • 2018-07-06
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2018-03-14
    相关资源
    最近更新 更多