我试图以JSON格式仅获取每个数据中的洞察力。我使用lodash按月过滤,但我不能只获得每个对象的洞察力。
let insight5 = [{
insight: "valid",
reportMonth: "January - June 2018"
},
{
insight: "invalid",
reportMonth: "January 2018"
},
{
insight: "valid",
reportMonth: "February 2018"
},
{
insight: "valid",
reportMonth: "March 2018"
},
{
insight: "valid",
reportMonth: "April 2018"
},
{
insight: "valid",
reportMonth: "May 2018"
},
{
insight: "valid",
reportMonth: "June 2018"
},
];
function filterData(data, month) {
let filtered = _.filter(data, x => x.reportMonth == month)
return filtered[0];
}
发布于 2018-07-05 10:44:32
要仅获得洞察力,您需要返回该属性:
return filtered.length > 0 && filtered[0].insight;我首先检查长度,以防找不到匹配的数据。
发布于 2018-07-05 11:05:36
您可以使用普通的JavaScript Array.prototype.filter()和Array.prototype.map()
代码:
const insight5 = [{insight: "valid",reportMonth: "January - June 2018"},{insight: "invalid",reportMonth: "January 2018"},{insight: "valid",reportMonth: "February 2018"},{insight: "valid",reportMonth: "March 2018"},{insight: "valid",reportMonth: "April 2018"},{insight: "valid",reportMonth: "May 2018"},{insight: "valid",reportMonth: "June 2018"}];
const getInsightForMonth = month => insight5
.filter(o => o.reportMonth.includes(month))
.map(o => o.insight);
console.log(getInsightForMonth('February'));
发布于 2018-07-05 10:51:21
试试这个。
var desiredMonth = "February";
let insight5 = [{
insight: "valid",
reportMonth: "January - June 2018"
},
{
insight: "invalid",
reportMonth: "January 2018"
},
{
insight: "valid",
reportMonth: "February 2018"
},
{
insight: "valid",
reportMonth: "March 2018"
},
{
insight: "valid",
reportMonth: "April 2018"
},
{
insight: "valid",
reportMonth: "May 2018"
},
{
insight: "valid",
reportMonth: "June 2018"
},
];
const filteredData = insight5.reduce((acc, currentValue) => {
if (currentValue.reportMonth.includes(desiredMonth)) {
acc.push(currentValue.insight);
}
return acc;
}, []);
console.log(filteredData);
https://stackoverflow.com/questions/51182719
复制相似问题