4 回答
TA贡献1797条经验 获得超6个赞
如果我没记错的话,那么你想要的是这样的东西——
const data = {
"measures": [
{
"_id": "5fbaaa",
"duration": "15:00",
},
{
"_id": "5fbbdd",
"duration": "12:20",
},
{
"_id": "5fbbbb",
"duration": "12:00",
},
{
"_id": "5fbccc",
"duration": "25:30",
},
]
};
const inMin = (duration) => {
const [hour, min] = duration.split(':');
return hour * 60 + min * 1;
}
data.measures.sort((a, b) => {
return inMin(b.duration) - inMin(a.duration);
});
console.log(data);
在这里,我缩短了您的数据结构,并假定您的持续时间HH:mm
格式,并将持续时间以分钟为单位转换并按顺序排序desc
。
TA贡献1876条经验 获得超7个赞
好吧,听起来你想对数组进行排序。为此,您应该使用该Array.sort
方法而不是Array.map
.
下面的代码将对比较duration
值的数组进行排序。String.localeCompare是一个方便的函数,因为它已经为您转换了日期。
this.state.measures.sort((a,b) => a.duration.localeCompare(b.duration))
TA贡献1866条经验 获得超5个赞
您应该measures对数组进行排序。
this.state.measure.sort((a,b)=>{
const [m, s] = a.time.split(":").map(Number), [m2, s2] = b.time.split(":").map(Number);
return m * 60 + s - (m2 * 60 + s2);
});
TA贡献1869条经验 获得超4个赞
因为时间格式是字符串,并且在使用 parseFloat 之前有 : 只需执行 time.split(':').join('.')
this.state.measure.map((data, index) => {
let time = data.duration
const totalTime = time.sort((a, b) => parseFloat(a.time.split(':').join('.') )- parseFloat(b.time.split(':').join('.')))
console.log(totalTime)
})
添加回答
举报