Javascript 使用Lodash和矩从单个日期开始的天/小时分组数组
我正在尝试变换我的数组,以便在渲染视图时轻松使用它 我现在有这个示例代码Javascript 使用Lodash和矩从单个日期开始的天/小时分组数组,javascript,node.js,momentjs,lodash,Javascript,Node.js,Momentjs,Lodash,我正在尝试变换我的数组,以便在渲染视图时轻松使用它 我现在有这个示例代码 let arr = [ { date: d.setDate(d.getDate() - 1), name: "john", country: "AU", text: "Hey" }, { date: d.setDate(d.getDate() - 1), name: "jake", cou
let arr = [
{
date: d.setDate(d.getDate() - 1),
name: "john",
country: "AU",
text: "Hey"
},
{
date: d.setDate(d.getDate() - 1),
name: "jake",
country: "US",
text: "Hey"
},
{
date:d.setDate(d.getDate() - 3),
name: "jeff",
country: "US",
text: "Hey"
},
{
date:d.setDate(d.getDate() - 5),
name: "jared",
country: "US",
text: "Hey"
},
{
date:d.setDate(d.getDate() - 2),
name: "jane",
country: "UK",
text: "Hey"
}
]
let hours = _.groupBy(arr, (result) => moment(result['date']).startOf('hour').format("LT"));
let day = _.groupBy(arr, (result) => moment(result['date']).startOf('day').format("MMM Do YY"));
console.log(day)
我想要的是按小时对数据进行分组,这是从单个“日期”字符串中按天分组的(我可以通过u.groupby函数单独进行分组,但我希望它输出一个组合数组)
所需的输出应如下所示:
{
'Apr 15th 19': [
{'4 pm':[
{
date: 1555318593445,
name: 'ahmed',
country: 'AU',
text: 'Hey'
}
]
]
}....
使用\uux.flow()
创建一个按天分组的函数,然后映射每天的值,并按小时分组:
const{flow,groupBy,mapValues}=_
常数fn=流量(
arr=>groupBy(arr,v=>time(v.date).startOf('day').format(“MMM-Do-YY”),
groups=>mapValues(groups,g=>
时刻(v.date)。开始时间(“小时”)。格式(“LT”)
))
)
const arr=[{“日期”:1555318593445,“姓名”:“约翰”,“国家”:“AU”,“文本”:“嘿”},{“日期”:155531859300,“姓名”:“杰克”,“国家”:“美国”,“文本”:“嘿”},{“日期”:1555316593445,“姓名”:“杰夫”,“国家”:“美国”,“文本”:“嘿”{“日期”:1555316593345,“姓名”:“杰瑞德”,“国家”:“美国”,“文本”:“嘿”},{“日期”:155531659400,“姓名”:“简”,“国家”:“英国”,“文本”:“嘿”]
常数结果=fn(arr)
console.log(结果)
为了我自己的理解,你能解释一些事情吗?比如:流与链有何不同?为什么mapvalues是第二步?我尝试在链函数中使用2个groupBy,但没有得到结果…我只是想自己解决任何问题。任何解释都很感谢!还有一个问题,我怎么做d我将按照日期/时间等对整个数组(外部=日期,内部=时间)进行排序(最新日期最早,内部=上次最早)?按日期时间对原始数组进行排序,然后对项目进行分组。原始排序顺序将保留。