Javascript Array.filter正在返回空数组

Javascript Array.filter正在返回空数组,javascript,arrays,date,object,filtering,Javascript,Arrays,Date,Object,Filtering,我正在尝试根据日期获取故障详细信息。 为此,我应用了array.filter,但它返回的是空数组 以下是我的阵列: value:[{ "Date": "02/04/2019", "Total": "1000", "Success": "850", "Failure": "150", "FailureDeatils": [{ "Reason": "Reason1", "Count": 2 }, { "Reason": "Rea

我正在尝试根据日期获取故障详细信息。 为此,我应用了array.filter,但它返回的是空数组

以下是我的阵列:

value:[{
  "Date": "02/04/2019",
  "Total": "1000",
  "Success": "850",
  "Failure": "150",
  "FailureDeatils": [{
      "Reason": "Reason1",
      "Count": 2
    },
    {
      "Reason": "Reason2",
      "Count": 6
    }
  ]
}, {
  "Date": "03/04/2019",
  "Total": "800",
  "Success": "750",
  "Failure": "150",
  "FailureDeatils": [{
    "Reason": "Reason1",
    "Count": 3
  }, {
    "Reason": "Reason2",
    "Count": 1
  }]
}]      
如果我给出的日期为2019年4月2日,则应返回以下信息:

{
  "FailureDeatils": [{
      "Reason": "Reason1",
      "Count": 2
    },
    {
      "Reason": "Reason2",
      "Count": 6
    }
  ]
}
我正在使用以下array.filter方法:

var filtered = value.filter(isPresent);
function isPresent(value) {
  return value == 02/04/2019;
}
这将返回空数组

谁能告诉我哪里出了问题吗?

在函数isPresent中,值是数组中的每个对象

将整个对象与一个值进行比较

您需要做的是比较该对象的对象属性

函数isPresentvalue{ 返回值。日期==2019年4月2日; } 在函数isPresent中,值是数组中的每个对象

将整个对象与一个值进行比较

您需要做的是比较该对象的对象属性

函数isPresentvalue{ 返回值。日期==2019年4月2日; } 您需要检查value.Date而不是value,因为value或回调参数将保存数组中的整个迭代对象:

要仅从过滤对象中获取FailureDeatils,可以映射 过滤后的结果包括:

注:

确保在2019年4月2日之间进行换行,以便将其作为字符串进行计算并正确比较,否则将被计算并视为数字,并给出错误的过滤结果。 避免对数组和数组使用相同的变量名值两次 用于回调参数,以提高代码的可读性。 演示:

风险值数据=[{ 日期:2019年4月2日, 总数:1000, 成功:850, 失败:150, 故障数据直到:[{ 理由:理由1, 计数:2 }, { 理由:理由2,, 计数:6 } ] }, { 日期:2019年4月3日, 总数:800, 成功:750, 失败:150, 故障数据直到:[{ 理由:理由1, 计数:3 }, { 理由:理由2,, 计数:1 }] }] var filtered=data.filterisPresent.mape=>{return{FailureDeatils:e.FailureDeatils}; 函数isPresentvalue{ 返回值。日期和值。日期==2019年4月2日; } console.logfiltered 您需要检查value.Date而不是value,因为value或回调参数将保存数组中的整个迭代对象:

要仅从过滤对象中获取FailureDeatils,可以映射 过滤后的结果包括:

注:

确保在2019年4月2日之间进行换行,以便将其作为字符串进行计算并正确比较,否则将被计算并视为数字,并给出错误的过滤结果。 避免对数组和数组使用相同的变量名值两次 用于回调参数,以提高代码的可读性。 演示:

风险值数据=[{ 日期:2019年4月2日, 总数:1000, 成功:850, 失败:150, 故障数据直到:[{ 理由:理由1, 计数:2 }, { 理由:理由2,, 计数:6 } ] }, { 日期:2019年4月3日, 总数:800, 成功:750, 失败:150, 故障数据直到:[{ 理由:理由1, 计数:3 }, { 理由:理由2,, 计数:1 }] }] var filtered=data.filterisPresent.mape=>{return{FailureDeatils:e.FailureDeatils}; 函数isPresentvalue{ 返回值。日期和值。日期==2019年4月2日; }
console.logfiltered 你应该这样做-

const value = [{
  "Date": "02/04/2019",
  "Total": "1000",
  "Success": "850",
  "Failure": "150",
  "FailureDeatils": [{
      "Reason": "Reason1",
      "Count": 2
    },
    {
      "Reason": "Reason2",
      "Count": 6
    }
  ]
}, {
  "Date": "03/04/2019",
  "Total": "800",
  "Success": "750",
  "Failure": "150",
  "FailureDeatils": [{
    "Reason": "Reason1",
    "Count": 3
  }, {
    "Reason": "Reason2",
    "Count": 1
  }]
}]

const filtered = value.filter((x) => x.Date === "02/04/2019");

你应该这样做-

const value = [{
  "Date": "02/04/2019",
  "Total": "1000",
  "Success": "850",
  "Failure": "150",
  "FailureDeatils": [{
      "Reason": "Reason1",
      "Count": 2
    },
    {
      "Reason": "Reason2",
      "Count": 6
    }
  ]
}, {
  "Date": "03/04/2019",
  "Total": "800",
  "Success": "750",
  "Failure": "150",
  "FailureDeatils": [{
    "Reason": "Reason1",
    "Count": 3
  }, {
    "Reason": "Reason2",
    "Count": 1
  }]
}]

const filtered = value.filter((x) => x.Date === "02/04/2019");
常量值=[{ 日期:2019年4月2日, 总数:1000, 成功:850, 失败:150, 故障数据直到:[{ 理由:理由1, 计数:2 }, { 理由:理由2,, 计数:6 } ] }, { 日期:2019年4月3日, 总数:800, 成功:750, 失败:150, 故障数据直到:[{ 理由:理由1, 计数:3 }, { 理由:理由2,, 计数:1 }] }] var filtered=value.filterisPresent.maprow=>{ 返回{ FailureDeatils:row.FailureDeatils } }; 函数isPresentvalue{ 返回值。日期===2019年4月2日; } 控制台。日志过滤 常量值=[{ 日期:2019年4月2日, 总数:1000, 成功:850, 失败:150, 故障数据直到:[{ 理由:理由1, 计数:2 }, { 理由:理由2,, 计数:6 } ] }, { 日期:2019年4月3日, 总数:800, 成功:750, 失败:150, 故障数据直到:[{ 理由:理由1, 计数:3 }, { 理由:理由2,, 计数:1 }] }] var filtered=value.filterisPresent.maprow=>{ 返回{ FailureDeatils:row.FailureDeatils } }; 函数isPresentvalue{ 返回值。日期===2019年4月2日; } console.logfiltered您可以执行以下操作:

const value=[{日期:2019年4月2日,总计:1000,成功:850,失败:150,失败日期:[{原因:原因1,计数:2},{原因:原因2,计数:6}]},{日期:2019年4月3日,总计:800,成功:750,失败:150,失败日期:[{原因:原因1, 计数:3},{原因:推理2,计数:1}]}; const isPresent={Date}=>Date==='2019年4月2日'; const filtered=value.filterspresent; console.logfiltered 你可以做:

const value=[{日期:2019年4月2日,总计:1000,成功:850,失败:150,失败数据:[{原因:原因1,计数:2},{原因:原因2,计数:6}]},{日期:2019年4月3日,总计:800,成功:750,失败:150,失败数据:[{原因:原因1,计数:3},{原因:原因:原因2,计数:1}]; const isPresent={Date}=>Date==='2019年4月2日'; const filtered=value.filterspresent;
console.logfiltered 以下是基于数组的工作代码

var value = [{
  "Date": "02/04/2019",
  "Total": "1000",
  "Success": "850",
  "Failure": "150",
  "FailureDeatils": [{
      "Reason": "Reason1",
      "Count": 2
    },
    {
      "Reason": "Reason2",
      "Count": 6
    }
  ]
}, {
  "Date": "03/04/2019",
  "Total": "800",
  "Success": "750",
  "Failure": "150",
  "FailureDeatils": [{
    "Reason": "Reason1",
    "Count": 3
  }, {
    "Reason": "Reason2",
    "Count": 1
  }]
}];

var filtered = value.filter (isPresent).map (obj => obj.FailureDeatils);;
function isPresent (value) {
  return value.Date == "02/04/2019";
}

console.log (filtered);

以下是基于数组的工作代码

var value = [{
  "Date": "02/04/2019",
  "Total": "1000",
  "Success": "850",
  "Failure": "150",
  "FailureDeatils": [{
      "Reason": "Reason1",
      "Count": 2
    },
    {
      "Reason": "Reason2",
      "Count": 6
    }
  ]
}, {
  "Date": "03/04/2019",
  "Total": "800",
  "Success": "750",
  "Failure": "150",
  "FailureDeatils": [{
    "Reason": "Reason1",
    "Count": 3
  }, {
    "Reason": "Reason2",
    "Count": 1
  }]
}];

var filtered = value.filter (isPresent).map (obj => obj.FailureDeatils);;
function isPresent (value) {
  return value.Date == "02/04/2019";
}

console.log (filtered);

返回值。日期==2019年4月2日;也许吧?我现在在做什么?请分享您正在使用isPresentis应用的条件Present只不过是下面写的函数。好的,我已经根据您的代码添加了一个答案。在代码中实现之前,您也可以在浏览器控制台上进行测试。如果该问题对您有效,请进行投票。谢谢返回值。日期==2019年4月2日;也许吧?我现在在做什么?请分享您正在使用isPresentis应用的条件Present只不过是下面写的函数。好的,我已经根据您的代码添加了一个答案。在代码中实现之前,您也可以在浏览器控制台上进行测试。如果该问题对您有效,请进行投票。谢谢谢谢我现在可以得到全部数据,但我只需要失败的细节,谢谢!!我现在可以获得全部数据,但我只需要其中的故障详细信息,2019年4月2日将在此处计算,请参阅console的结果。将在此处计算log02/04/201902/04/2019,请参阅console的结果。log02/04/2019
var value = [{
  "Date": "02/04/2019",
  "Total": "1000",
  "Success": "850",
  "Failure": "150",
  "FailureDeatils": [{
      "Reason": "Reason1",
      "Count": 2
    },
    {
      "Reason": "Reason2",
      "Count": 6
    }
  ]
}, {
  "Date": "03/04/2019",
  "Total": "800",
  "Success": "750",
  "Failure": "150",
  "FailureDeatils": [{
    "Reason": "Reason1",
    "Count": 3
  }, {
    "Reason": "Reason2",
    "Count": 1
  }]
}];

var filtered = value.filter (isPresent).map (obj => obj.FailureDeatils);;
function isPresent (value) {
  return value.Date == "02/04/2019";
}

console.log (filtered);