我有一个对象数据数组,我需要根据日期对每个对象进行分组,一旦分组,我需要返回分组的数组 block 。
查看以下数据
//input
var arr = [{ id: 5, date: "2018-09-29T07:00:00Z", data: "Sample1" },
{ id: 5, date: "2018-09-29T07:00:00Z", data: "Sample2" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample3" },
{ id: 5, date: "2018-09-29T07:00:00Z", data: "Sample4" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample5" },
{ id: 5, date: "2018-07-08T07:00:00Z", data: "Sample6" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample7" },
{ id: 5, date: "2018-10-08T07:00:00Z", data: "Sample8" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample9" },
{ id: 5, date: "2018-07-05T07:00:00Z", data: "Sample10" }]
//expected grouping
var arr1 = [{ id: 5, date: "2018-09-29T07:00:00Z", data: "Sample1" },
{ id: 5, date: "2018-09-29T07:00:00Z", data: "Sample2" },
{ id: 5, date: "2018-09-29T07:00:00Z", data: "Sample4" }]
var arr2 = [{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample3" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample5" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample7" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample9" }]
var arr3 = [{ id: 5, date: "2018-07-05T07:00:00Z", data: "Sample10" }]
var arr4 = [{ id: 5, date: "2018-10-08T07:00:00Z", data: "Sample6" },
{ id: 5, date: "2018-10-08T07:00:00Z", data: "Sample8" }]
//expected output
var array1 = ["Sample1", "Sample2", "Sample4"]
var array2 = ["Sample3", "Sample5", "Sample7", "Sample9"]
var array3 = ["Sample10"]
var array4 = ["Sample6", "Sample8"]
var groupedData = _.groupBy(arr, "date");
console.log(groupedData)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
使用 lodash 我已经取得了这么多成就
var groupedData = _.groupBy(arr, "date");
var keys = _.keys(groupedData)
console.log(groupedData)
分组其工作正常。我如何链接一个方法并返回 block 数组
最佳答案
您可以像这样简化代码。
var arr = [{ id: 5, date: "2018-09-29T07:00:00Z", data: "Sample1" },
{ id: 5, date: "2018-09-29T07:00:00Z", data: "Sample2" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample3" },
{ id: 5, date: "2018-09-29T07:00:00Z", data: "Sample4" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample5" },
{ id: 5, date: "2018-07-08T07:00:00Z", data: "Sample6" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample7" },
{ id: 5, date: "2018-10-08T07:00:00Z", data: "Sample8" },
{ id: 5, date: "2018-08-18T07:00:00Z", data: "Sample9" },
{ id: 5, date: "2018-07-05T07:00:00Z", data: "Sample10" }]
const obj = {};
arr.forEach(a => {
if (obj[a.date]) {
obj[a.date].push(a.data);
} else {
obj[a.date] = [a.data];
}
});
console.log(obj);
关于javascript - 如何对数组进行分组并根据每个组返回一个数组 block 的单个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51242669/