如何按特定字段对对象数组进行排序 Javascript
How to sort an array of object by a specific field Javascript
我有一个数组,其中包含具有多个字段的多个对象,我正在尝试按从最大“Views”值到最低值的降序对数组进行排序。但是当我 运行 我的代码时,它会按顺序输出一些,但大多数是随机的。如果这可能会影响它,我的项目中有更多的数组行。
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"}
如评论中所述,此处不需要语言环境比较:
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, 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));
我们可以使用对象中可用的任何键进行排序。根据您的要求,这里使用'view',
const list = [{title: "Test1", views: "25"}, {title: "Test2", views: "105"}, {title: "Test3", views: "12"}]
console.log(list.sort((a, b) => b.views - a.views));
我有一个数组,其中包含具有多个字段的多个对象,我正在尝试按从最大“Views”值到最低值的降序对数组进行排序。但是当我 运行 我的代码时,它会按顺序输出一些,但大多数是随机的。如果这可能会影响它,我的项目中有更多的数组行。
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"}
如评论中所述,此处不需要语言环境比较:
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, 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));
我们可以使用对象中可用的任何键进行排序。根据您的要求,这里使用'view',
const list = [{title: "Test1", views: "25"}, {title: "Test2", views: "105"}, {title: "Test3", views: "12"}]
console.log(list.sort((a, b) => b.views - a.views));