javascript - 如何对数组进行分组并根据每个组返回一个数组 block 的单个属性?

标签 javascript lodash

我有一个对象数据数组,我需要根据日期对每个对象进行分组,一旦分组,我需要返回分组的数组 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/

相关文章:

webpack - 如何在 Webpack 4 中从页眉/页脚(和 css/js 注入(inject))生成静态页面的 html 模板(lodash 模板不起作用)?

javascript - 如何按键组合数组中的值?

javascript - 如何将数据从 EJS 模板传递到 AngularJS Controller

javascript - 如何在我们的 react 应用程序中获取 JWT cookie,如何检查用户是否登录我无法找到如何处理我的 react 应用程序 session

javascript - ionic 检查多个 Promise 是否完成

angular - 比较 Observable 的前一个值和 Angular 中的下一个值

javascript - 识别数组中具有与另一个对象数组中的属性不同的属性的对象的最快方法

javascript - 如何获得具有特定属性的嵌套对象的计数?

javascript - ShareThis.com 社交媒体按钮 HitCounter 事故

javascript - 如何使用 jquery 查找下一个元素?