javascript - 使用 javascript 根据数组的相同元素对数组进行分组

标签 javascript php arrays

我有这种只有 dateid 的数组。

temp:[
    0:{
     id:"1"
     date:"2017-11-07"
    }
    1:{
    id:"2"
     date:"2017-11-05"
    }
    2:{
     id:"3"
     date:"2017-11-05"
    }
    3:{
     id:"4"
     date:"2017-11-01"
    }
    4:{
     id:"5"
     date:"2017-11-01"
    }
    ] 

我只是想这样分组

data:[
    0:{
      0:[id:"1",date:"2017-11-07"]
    }
    1:{
      0:[id:"2",date:"2017-11-05"],
      1:[id:"3",date:"2017-11-05"]
    }
    2:{
      0:[id:"4",date:"2017-11-01"],
      1:[id:"5",date:"2017-11-01"]
    }]

我有一个来自 php 的代码,它在

中运行良好

这是我在 php 中的代码:

$newTemp = array();
foreach($temp as $value){
  $newTemp[$value['id'].'_'.$value['date']][] = $value;  
}

但我不知道如何在 javascript 中使用它

你能帮助我编写代码,了解如何对数组的日期进行分组

最佳答案

您可以使用哈希表来定义同一组,并将任何新组推送到结果集。

var data = [{ id: "1", date: "2017-11-07" }, { id: "2", date: "2017-11-05" }, { id: "3", date: "2017-11-05" }, { id: "4", date: "2017-11-01" }, { id: "5", date: "2017-11-01" }],
    hash = Object.create(null),
    result = [];

data.forEach(function (o) {
    if (!hash[o.date]) {
        hash[o.date] = [];
        result.push(hash[o.date]);
    }
    hash[o.date].push(o);
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 使用 javascript 根据数组的相同元素对数组进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47152972/

相关文章:

php - Wordpress 文件 问题

javascript - 箭头函数 '() => {}' 在 Javascript 中是什么意思?

javascript - html 编码 <textarea> 值

php - 无法在实时服务器中发布富文本编辑器内容?

java - 如何按日期对数组数组进行排序?

javascript - 从alasql中日期范围之间的对象数组获取数据

php - 当 WooCommerce 中的自定义订单状态发生变化时发送电子邮件通知

php - 从数据库获取类别期间按类别过滤器计算行数

arrays - 将每个值动态 append 到 2D slice 中

javascript - 如何检查数组中是否存在某个值并获取下一个值?