根据使用JavaScript的相同元素对数组进行分组 [英] Group array according to the same element they have using javascript

查看:80
本文介绍了根据使用JavaScript的相同元素对数组进行分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这种类型的数组,仅具有日期 id

I have this kind of array that has date and id only.

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"]
    }]

我有一个<$ c $的代码c> php ,并且很好用,

I have a code from php, and it work well in,

这是我在 php :

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

但我不知道如何在<$ c $中使用它c> javascript

能否帮我编写代码,说明如何对数组的日期进行分组

Can you help me with my code, on how I should group the date of the array

推荐答案

您可以使用哈希表定义相同的组,然后将任何新组推入结果集中。

You could take a hash table for defining the same group and push any new group to the result set.

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的相同元素对数组进行分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆