Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用groupby从JSON获取数据,使用lodash进行过滤_Javascript_Json - Fatal编程技术网

Javascript 如何使用groupby从JSON获取数据,使用lodash进行过滤

Javascript 如何使用groupby从JSON获取数据,使用lodash进行过滤,javascript,json,Javascript,Json,我只需要从json文件中获取一个数据,我使用的是lodash.groupBy和.filter,但它只会返回一个错误的结果 let insightAverageThroughput = [{ "insight": "wahahahah", "reportMonth": "June 2018", "project": "Cambridge Core Dashboard" }, { "insight": "aaaaaaa", "reportMonth":

我只需要从json文件中获取一个数据,我使用的是lodash.groupBy和.filter,但它只会返回一个错误的结果

let insightAverageThroughput = [{
    "insight": "wahahahah",
    "reportMonth": "June 2018",
    "project": "Cambridge Core Dashboard"
  },
  {
    "insight": "aaaaaaa",
    "reportMonth": "February 2018",
    "project": "coreadmin"
  }
];

function filterInsights(data, month, project) {
  let grouped = _.groupBy(data, z => z.project == project)
  console.log(month)
  console.log(project)
  console.log(grouped)
  let filtered = _.filter(grouped[project], x => x.reportMonth == month)
  console.log(filter)
  return filtered.length > 0 && filtered[0].insight;
}

您应该
groupBy
仅按项目而不是按谓词:

  let grouped = _.groupBy(data, z => z.project)

您应该
groupBy
仅按项目而不是按谓词:

  let grouped = _.groupBy(data, z => z.project)

使用
groupBy
,所有数据将按单个项目分组,使用
filter
我们将返回所有项目,这些项目满足条件
reportMonth==month

另外,请注意我是如何使用
groupBy
的。您应该传递一个值,而不是条件:

_.groupBy(data, 'project')
以下是代码

让InsightAverage吞吐量=[{
“洞察”:“娃哈哈”,
“报告月”:“2018年6月”,
“项目”:“剑桥核心仪表板”
},
{
“洞察”:“AAAAA”,
“报告月”:“2018年2月”,
“项目”:“coreadmin”
}
];
功能过滤器(数据、月份、项目){
const grouped=\ uu.groupBy(数据“项目”)
const filteredItems=grouped[project].filter(({reportMonth})=>reportMonth==month)
返回{[project]:filteredItems}
}
log(filteringsights(insightAverageThroughput,'2018年2月,'coreadmin'))

使用
groupBy
,所有数据将按单个项目分组,并使用
过滤器
返回所有项目,这些项目满足条件
reportMonth===month

另外,请注意我是如何使用
groupBy
的。您应该传递一个值,而不是条件:

_.groupBy(data, 'project')
以下是代码

让InsightAverage吞吐量=[{
“洞察”:“娃哈哈”,
“报告月”:“2018年6月”,
“项目”:“剑桥核心仪表板”
},
{
“洞察”:“AAAAA”,
“报告月”:“2018年2月”,
“项目”:“coreadmin”
}
];
功能过滤器(数据、月份、项目){
const grouped=\ uu.groupBy(数据“项目”)
const filteredItems=grouped[project].filter(({reportMonth})=>reportMonth==month)
返回{[project]:filteredItems}
}
log(filteringsights(insightAverageThroughput,'2018年2月,'coreadmin'))