我有一個包含多個具有多個欄位的物件的陣列,我試圖按從最大的“視圖”值到最低的降序對陣列進行排序。但是當我運行我的代碼時,它會按順序輸出一些,但大多數是隨機的。如果這可能會影響它,我的專案中有更多的陣列行。
list = [{title: "Test1", views: "25"}, {title: "Test2", "105"}, {title: "Test3", views: "12"}]
var len = list.length - 1;
list.sort(function (a, b) {
return a.views.localeCompare(b.views) || b.views - a.views;
});
for(var x = 0; x < len; x ) {
displayFunc(list[x].title, list[x].views);
}
期望的輸出:
{title: "Test2", views: "105"}, {title: "Test1", "25"}, {title: "Test3", views: "12"}
提前感謝大家的支持!
uj5u.com熱心網友回復:
如評論中所述,您不需要在此處進行語言環境比較:
const list = [{title: "Test1", views: "25"}, {title: "Test2", views: "105"}, {title: "Test3", views: "12"}]
console.log(list.sort((a,b)=>{
return b.views - a.views
}));
uj5u.com熱心網友回復:
您的代碼中有一些錯誤。我更正了您的版本,并為您提供了一個更好、更現代的版本。
const list = [{title: "Test1", views: "25"}, {title: "Test2", views: "105"}, {title: "Test3", views: "12"}];
var len = list.length;
const list_sorted = list.sort(function (a, b) {
return parseInt(b.views, 10) - parseInt(a.views, 10);
});
for(var x = 0; x < len; x ) {
console.log(list[x].title, list[x].views);
}
/// Better
list.map(el => ({ ...el, views: parseInt(el.views, 10) })).sort((a,b) => b.views - a.views).forEach(el => console.log(el.title, el.views));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/414100.html
標籤:
