【问题标题】:How can I check the fields from an array result如何检查数组结果中的字段
【发布时间】:2021-03-16 20:10:25
【问题描述】:

我有一个来自 API 的数组响应。我想检查数组结果中的所有日期,如果它大于 {今天的日期},然后再进行 else if 条件。

这就是我所做的

Sample array result:
array = [
{
id = 1
name = Jerry
date = 2020-07-17
subject = Math
},
{
id = 2
name = Tom
date = 2015-07-17
subject = Science
},
{
id = 3
name = Lily
date = 2018-07-17
subject = Biology
}
]

for (i = 0; i < array.length; i++){
 
   if (new Date(array[i].dates) > today) {
     //do something
   
   }else if (new Date(array[i].dates) < today) {
     //do something
 }else{
     //do something
  }
 }
}
  1. 我注意到它正在检查所有条件。当索引变为 1 时,它会进入 if,elseif,else 条件。
  2. 所以我发现在进入下一个条件(即 else if 条件)之前检查数组中的所有日期不是正确的方法。
  3. 例如,我的数组中有三个结果,我想检查第一个条件中每个索引的所有日期,如果它满足条件,那么它将在该条件下执行其指定的任务。

【问题讨论】:

  • 事实上,您的问题确实不清楚。您能否edit it 包含一个示例数组以及您期望的结果?或者可能是伪代码?
  • 在第一个if 中使用new Date(array[i].dates),它假定一个对象数组,每个对象都有一个dates 属性。在您的第二个if 中,您使用new Date(array[i]).dates,它尝试将数组元素本身解析为Date,然后从Date 中获取dates 属性,这将失败,因为Date 对象确实(本机)没有 dates 属性。 else 也是一个语句,而不是一个函数 - 不需要括号。
  • 我犯了一些拼写错误。我已经有了答案。谢谢你。

标签: javascript arrays for-loop if-statement


【解决方案1】:

您可以使用Array#every 进行检查。

let array = [{
    id : 1,
    name : 'Jerry',
    date : '2020 - 07 - 17',
    subject : 'Math'
  },
  {
    id : 2,
    name : 'Tom',
    date : '2015 - 07 - 17',
    subject : 'Science'
  },
  {
    id : 3,
    name : 'Lily',
    date : '2018 - 07 - 17',
    subject : 'Biology'
  }
];
const today = new Date;
if(array.every(({date})=>new Date(date.replace(/\s+/g, '')) > today)){
  console.log('valid');
} else {
  console.log('invalid');
}

【讨论】:

  • @MarieBiscuits 没问题。
【解决方案2】:

好像有错别字。你的代码应该是这样的。

for (i = 0; i < array.length; i++) {
  const date = new Date(array[i].dates);
  if (date > today) {
    //do something
  } else if (date < today) {
    //do something
  } else {
    //do something
  }
}

【讨论】:

  • 是的,我打错了,谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多