js group objects in an array

js group objects in an array

var groupBy = function(xs, key) {
return xs.reduce(function(rv, x) {
(rv[x[key]] = rv[x[key]] || []).push(x);
return rv;
}, {});
};

https://www.consolelog.io/group-by-in-javascript/

https://stackoverflow.com/questions/14446511/most-efficient-method-to-groupby-on-an-array-of-objects

https://codereview.stackexchange.com/questions/37028/grouping-elements-in-array-by-multiple-properties



https://atendesigngroup.com/blog/array-map-filter-and-reduce-js



solution ??? sort & reduce

https://stackoverflow.com/questions/57355613/javascript-group-on-an-array-of-objects-with-timestamp-range-difference#



https://repl.it/@xgqfrms/grouping-objects-in-array-by-timestamp


/**
* @authr xgqfrms
* @ description grouping-objects-in-array-by-timestamp
*/ let log = console.log; const datas = [
{ msgId: 606896983568064500, text: "B", time: "2019/08/02 17:11", isSelf: true },
{ msgId: 606897486704189400, text: "A", time: "2019/08/02 17:13", isSelf: true },
{ msgId: 606892034444533700, text: "C", time: "2019/08/02 16:52", isSelf: false },
{ msgId: 606889698041045000, text: "D", time: "2019/08/02 16:42", isSelf: false },
{ msgId: 606866947376980000, text: "E", time: "2019/08/02 15:12", isSelf: false },
{ msgId: 606866947376970000, text: "G", time: "2019/08/01 5:12", isSelf: false },
{ msgId: 606866947376910000, text: "F", time: "2019/08/01 15:12", isSelf: false },
]; log(`src datas =`, JSON.stringify(datas, null, 4)); // m. s, ms
const fiveMinutes = 5 * 60 * 1000; let result = datas
// timestamp
// asc
.sort((a, b) => new Date(a.time) - new Date(b.time))
.reduce((arr, obj, i, {[i - 1]: last}) => {
if (!last || new Date(obj.time) - new Date(last.time) > fiveMinutes) {
arr.push([obj]);
} else {
arr[arr.length - 1].push(obj);
}
return arr;
}, []); log(`result =`, JSON.stringify(result, null, 4));

OK

[
[
{
"msgId": 606866947376970000,
"text": "G",
"time": "2019/08/01 5:12",
"isSelf": false
}
],
[
{
"msgId": 606866947376910000,
"text": "F",
"time": "2019/08/01 15:12",
"isSelf": false
}
],
[
{
"msgId": 606866947376980000,
"text": "E",
"time": "2019/08/02 15:12",
"isSelf": false
}
],
[
{
"msgId": 606889698041045000,
"text": "D",
"time": "2019/08/02 16:42",
"isSelf": false
}
],
[
{
"msgId": 606892034444533800,
"text": "C",
"time": "2019/08/02 16:52",
"isSelf": false
}
],
[
{
"msgId": 606896983568064500,
"text": "B",
"time": "2019/08/02 17:11",
"isSelf": true
},
{
"msgId": 606897486704189400,
"text": "A",
"time": "2019/08/02 17:13",
"isSelf": true
}
]
]

bug

https://repl.it/@xgqfrms/timestamp-group-bug







xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


js group objects in an array的更多相关文章

  1. js如何判断一个对象是不是Array?(转载)

    js如何判断一个对象是不是Array? 在开发中,我们经常需要判断某个对象是否为数组类型,在Js中检测对象类型的常见方法都有哪些呢? typeof 操作符 对于Function, String, Nu ...

  2. (三)underscore.js框架Objects类API学习

    keys_.keys(object)  Retrieve all the names of the object's properties. _.keys({one: 1, two: 2, three ...

  3. js如何判断一个对象是不是Array?

    在开发中,我们经常需要判断某个对象是否为数组类型,在Js中检测对象类型的常见方法都有哪些呢? typeof 操作符 对于Function, String, Number ,Undefined 等几种类 ...

  4. js如何判断数组是Array类型

    在说明如何判断一个对象为数组类型前,我们先巩固下js的数据类型,js一共有六大数据类型:number.string.object.Boolean.null.undefined.var str=&quo ...

  5. js中常用的对象—Array的属性和方法

    今天说一下,js中常用的内置对象——Array对象 Array常用属性: length prototype :给系统对象添加属性和方法 Array常用方法: Array.prototype.sum = ...

  6. js中的arguments、Array.prototype.slice.call()

    类数组对象:arguments js把传入到这个函数的全部参数存储在arguments里面,其实arguments也是个对象,而且是一个特殊的对象,它的属性名是按照传入参数的序列来的,第1个参数的属性 ...

  7. js如何判断一个对象是不是Array? 三种方法总有一种可以帮上忙

    转载:http://www.nowamagic.net/librarys/veda/detail/1250 在开发中,我们经常需要判断某个对象是否为数组类型,在Js中检测对象类型的常见方法都有哪些呢? ...

  8. js如何判断一个对象是不是Array

    typeof 操作符 对于Function, String, Number ,Undefined 等几种类型的对象来说,他完全可以胜任,但是为Array时 var arr=new Array(&quo ...

  9. js 数组详解(javascript array)

    Array Array 对象用于在单个的变量中存储多个值. 构造函数: 1)   new Array(); 2)   new Array(size); 3)   new Array(element0, ...

随机推荐

  1. null调整为not null default xxx,不得不注意的坑

    最近碰到一个case,值得分享一下. 现象 一个DDL,将列的属性从null调整为not null default xxx, alter table slowtech.t1 modify name v ...

  2. 算法总结篇---KMP算法

    目录 写在前面 例题 剪花布条 Radio Transmission OKR-Periods of Words 似乎在梦中见过的样子 Censoring 写在前面 仅为自用,不做推广 一起来看猫片吧! ...

  3. LOJ2723

    LOJ2723 Get Luffy Out 题目大意:给你n对钥匙,每对钥匙只可以用其中的任意一个,钥匙有编号,且不重复.有m个大门,每个门上有两个锁,每个锁对应一个编号的钥匙,只要打开两个锁中的一个 ...

  4. SSRF漏洞挖掘利用技巧

    参考文章 SSRF漏洞(原理&绕过姿势) SSRF绕过方法总结 SSRF绕过IP限制方法总结 Tag: #SSRF Ref: 概述 总结 利用一个可以发起网络请求的服务当作跳板来攻击内部其他服 ...

  5. 最简单直接地理解Java软件设计原则之单一职责原则

    理论性知识 定义 单一职责原则, Single responsibility principle (SRP): 一个类,接口,方法只负责一项职责: 不要存在多余一个导致类变更的原因: 优点 降低类的复 ...

  6. RIDE对应驱动下载

    https://blog.csdn.net/apollolkj/article/details/75408237

  7. 网际互连__TCP/IP三次握手和四次挥手

    在TCP/IP协议中,TCP协议提供可靠的连接服务. 位码即tcp标志位,有6种标示: SYN(synchronous建立联机).ACK(acknowledgement 确认).PSH(push传送) ...

  8. 【有趣的全彩LED | 编程】用STM32 HAL库让WS2812B为你所动

    一.效果展示 观看演示效果:https://www.bilibili.com/video/BV1dv411Y7x3 使用STM32 HAL库编程 PWM+DMA控制输出,CubeMX生成初始工程 实现 ...

  9. NodeRED - 全局变量的使用笔记

    NodeRED - 全局变量的使用笔记 global global.get(..) :获取全局范围的上下文属性 global.set(..) :设置全局范围的上下文属性 global.keys(..) ...

  10. P2120 [ZJOI2007] 仓库建设(斜率优化DP)

    题意:\(1\sim N\) 号工厂,第\(i\) 个工厂有\(P_i\)个成品,第\(i\)个工厂建立仓库需要\(C_i\)的费用,该工厂距离第一个工厂的距离为\(X_i\),编号小的工厂只能往编号 ...