给出按日期降序排序的项目列表(索引0处的最近日期)。请注意,我们可能没有所有日期的数据。
[
{price: 10, dt: "2017-02-13"},
{price: 25, dt: "2017-02-05"},
{price: 15, dt: "2017-01-15"},
...
..
]
我正在尝试将这些数据分组为几周,我可以使用“while”循环成功完成。
请参阅Plnkr此处
我目前无法使用像_.groupBy()那样的结构,因为分组条款不断移动..(我们必须根据周和一周进行分组,可以是Mn-Sun或Tues-Mn等)< / p>
对此有更优雅的解决方案吗?
答案 0 :(得分:0)
此代码将创建表示每周的数组:
const data = [
{ price: 10, dt: "2017-02-13" },
{ price: 10, dt: "2017-02-12" },
{ price: 10, dt: "2017-02-11" },
{ price: 25, dt: "2017-02-05" },
{ price: 15, dt: "2017-01-15" }
]
const group = (data) => {
let date = new Date(data[0].dt)
date.setTime -= date.getDay() * 24 * 60 * 60 * 1000
let grup = []
let newData = []
for (let i in data) {
const dif = Math.floor(((date - new Date(data[i].dt)) / 24 / 1000 / 60 / 60) / 7)
if (newData[dif]) {
newData[dif].push(data[i])
} else {
newData[dif] = [data[i]]
}
}
data.push(grup)
return newData
}
console.log(group(data))
请注意,如果未找到周数据的数据将是未定义的