簡體   English   中英

如何按特定字段 Javascript 對 object 的數組進行排序

[英]How to sort an array of object by a specific field Javascript

我有一個包含多個具有多個字段的對象的數組,我試圖按從最大的“視圖”值到最低的降序對數組進行排序。 但是當我運行我的代碼時,它會按順序輸出一些,但大多數是隨機的。 如果這可能會影響它,我的項目中有更多的數組行。

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);
}

所需的 output:

{title: "Test2", views: "105"}, {title: "Test1", "25"}, {title: "Test3", views: "12"}

如評論中所述,您不需要在此處進行語言環境比較:

 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 }));

您的代碼中有一些錯誤。 我更正了您的版本,並為您提供了一個更好、更現代的版本。

 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) - parseInt(a.views); }); for(var x = 0; x < len; x++) { console.log(list[x].title, list[x].views); } /// Better list.map(el => ({...el, views: parseInt(el.views) })).sort((a,b) => b.views - a.views).forEach(el => console.log(el.title, el.views));

我們可以使用 object 中可用的任何鍵進行排序。 根據您的要求,此處使用“視圖”,

const list = [{title: "Test1", views: "25"}, {title: "Test2", views: "105"}, {title: "Test3", views: "12"}]

console.log(list.sort((a, b) => b.views - a.views));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM