4 回答

TA貢獻1797條經(jīng)驗 獲得超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);
在這里,我縮短了您的數(shù)據(jù)結(jié)構(gòu),并假定您的持續(xù)時間HH:mm
格式,并將持續(xù)時間以分鐘為單位轉(zhuǎn)換并按順序排序desc
。

TA貢獻1876條經(jīng)驗 獲得超7個贊
好吧,聽起來你想對數(shù)組進行排序。為此,您應(yīng)該使用該Array.sort
方法而不是Array.map
.
下面的代碼將對比較duration
值的數(shù)組進行排序。String.localeCompare是一個方便的函數(shù),因為它已經(jīng)為您轉(zhuǎn)換了日期。
this.state.measures.sort((a,b)?=>?a.duration.localeCompare(b.duration))

TA貢獻1866條經(jīng)驗 獲得超5個贊
您應(yīng)該measures對數(shù)組進行排序。
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條經(jīng)驗 獲得超4個贊
因為時間格式是字符串,并且在使用 parseFloat 之前有 : 只需執(zhí)行 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)
})
添加回答
舉報