Javascript Array.filter正在返回空数组
我正在尝试根据日期获取故障详细信息。 为此,我应用了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
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);