【问题标题】:IF statement to identify 'null' in loop being ignored在被忽略的循环中标识“null”的 IF 语句
【发布时间】:2021-06-26 10:58:51
【问题描述】:

我有以下循环,我已经把它放在一起并且正在工作(在一定程度上):

 for (var i = 0; i < dataIn.length; i++) {
  if (dataIn.YourName = [] ) {
      var modifiedName = dataIn[i].YourName.replace(/ \([\s\S]*?\)/g, '');
      dataIn[i].YourName = modifiedName; 
       
     }
     
    else {
 console.log('Do Nothing');
    }
 }

但是,当 API 源中的内容为空 (null) 时,我遇到了错误。 控制台错误:无法读取 null 的“替换”属性

因此,我尝试将循环更新为仅在信息不为空或未定义(见下文)时运行,但它被忽略并仍在尝试运行。

for (var i = 0; i < dataIn.length; i++) {
  if (dataIn.YourName !== null && dataIn.YourName !== '' ) {
      var modifiedName = dataIn[i].YourName.replace(/ \([\s\S]*?\)/g, '');
      dataIn[i].YourName = modifiedName; 
       
     }
     
    else {
 console.log('Do Nothing');
    }
 }

来自 API 的样本数据。

什么有效:

"YourName": "John Citizen", 

什么会引发控制台错误:

"YourName": null, 

【问题讨论】:

标签: javascript


【解决方案1】:

让我们首先在这里解决一个问题。这一行:

if (dataIn.YourName = [] ) {

总是评估为真。您正在为您的 YourName 属性分配一个空数组,然后在 if - empty arrays are always truthy 中使用该分配。

至于您如何尝试更正它,您最初检查的是dataIn.YourName,但随后尝试阅读dataIn[i].YourName - 您需要保持一致。我怀疑你想要的是:

 if (dataIn[i].YourName !== null && dataIn[i].YourName !== '' ) {
    var modifiedName = dataIn[i].YourName.replace(/ \([\s\S]*?\)/g, '');
    dataIn[i].YourName = modifiedName;        
 }

【讨论】:

  • 谢谢贾米克。既然你指出了答案,答案就很明显了。感谢帮助和及时回复。保重!
猜你喜欢
  • 2023-02-15
  • 2021-10-22
  • 2015-08-13
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
  • 2019-10-22
  • 1970-01-01
相关资源
最近更新 更多