【问题标题】:Null check in the return statement返回语句中的空值检查
【发布时间】:2019-02-26 20:07:00
【问题描述】:

当我在data.req 中有一个空值时,data.req.toLowerCase() 会抛出一个错误。如何检查像

这样的条件
if(data.req === null) {
    //do nothing
} else { 
    data.req.toLowerCase().indexOf(searchTerms.req) !== -1
}

// 我应该如何在下面提到的返回语句中仅检查 data.req 是否为空?

return data.client.toLowerCase().indexOf(searchTerms.client) !== -1
    && data.req.toLowerCase().indexOf(searchTerms.req) !== -1;

// 样本数据

Data: [{req: "test", client: "client_01"},
{req: "now_test_01", client: "sample client"},
{req: "test", client: "client_01"},
{req: null, client: "sample client"},
{req: null, client: "client_01"},
{req: "now_test_018", client: "sample client"}]

【问题讨论】:

  • 添加&& data.req支票
  • 你也可以将 null 转换为空字符串,(data.req + '').toLowerCase() 如果你喜欢
  • @ClancyHood null + '' 返回"null"
  • dang,我需要重温我的 wat 讲座destroyallsoftware.com/talks/wat
  • 这里对表格数据进行过滤

标签: javascript return angular7


【解决方案1】:

如果data.reqnull,您可以使用默认值。

(data.req || '').toLowerCase().indexOf(searchTerms.req) !== -1

或者使用 ES6

(data.req || '').toLowerCase().includes(searchTerms.req)

【讨论】:

  • 请添加一些示例,说明您拥有什么以及您想获得什么。
【解决方案2】:

试试这个:

return data.client.toLowerCase().indexOf(searchTerms.client) !== -1
   && ((data.req == null && (searchTerms.req == null || searchTerms.req == "")) 
      || (data.req && data.req.toLowerCase().indexOf(searchTerms.req) !== -1));

【讨论】:

  • 不,当 searchTerms.req 有值时,这不起作用,当 searchTerms.req = 'test' 它返回 true for data.req = null,这是错误的
  • (data.req == null || data.req.toLowerCase().indexOf(searchTerms.req) !== -1)
  • 上述条件在 searchTerms.req = '' 时有效,但在 searchTerms.req 中有某些值时无效。我正在寻找的条件是当 searchTerms.req='tes' 它必须返回索引号为 0、1、2 和 5 但不是 3 和 4 的数据(在问题中提到)。
  • @Abdulah - 您提供的解决方案是返回具有空值的记录以及过滤后的记录
【解决方案3】:

您可以简单地执行以下操作:

return !searchTerm.req || data.client.toLowerCase().indexOf(searchTerms.client) !== -1
    && data.req && data.req.toLowerCase().indexOf(searchTerms.req) !== -1;

【讨论】:

  • 如果我这样做,过滤器功能正在过滤具有空值的数据,但我应该显示具有空值的数据
  • 您想只显示空值还是两者都显示?
  • 当我在 searchTerms.req 中没有任何值时,我必须同时显示两者,但是当我在 searchTerms.req 中有一些值时,我必须显示数据中包含 searchTerms.req 的数据。要求
  • 我更新了我的答案,希望是对的,因为我还是不明白你想要什么
【解决方案4】:

需要根据条件返回值,问题已解决。我找到了解决方案。感谢大家的努力。

return data.client.toLowerCase().indexOf(searchTerms.client) !== -1 
&& (searchTerms.req ? data.req && data.req.toLowerCase().indexOf(searchTerms.req) !== -1 : 
(data.req == null || data.req.toLowerCase().indexOf(searchTerms.req) !== -1));

// 这是给谁贬低这个问题的:如果可能的话,当有人只是在寻找它时尝试给出一个解决方案。

【讨论】:

    猜你喜欢
    • 2016-08-27
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多