按对象属性值对数组进行数字排序

如何用 distance对这些对象的数组进行排序,以便将对象从最小距离排序到最大距离?

[
{ distance: 3388, duration: "6 mins", from: "Lenchen Ave, Centurion 0046, South Africa" },
{ distance: 13564, duration: "12 mins", from: "Lenchen Ave, Centurion 0046, South Africa" },
{ distance: 4046, duration: "6 mins", from: "Lenchen Ave, Centurion 0046, South Africa" },
{ distance: 11970, duration: "17 mins", from: "Lenchen Ave, Centurion 0046, South Africa" }
]
195020 次浏览

使用 Prototype.sort ()

myArray.sort((a, b) => a.distance - b.distance)

sort()方法接受 比较器函数。这个函数接受两个参数(大概都是同一类型的) ,它的工作是确定两个参数中哪个先出现。

它通过返回一个 整数来实现这一点

  • 否定(小于零) : 首先是第一个参数
  • 正数(大于零) : 第二个参数优先
  • 零: 对于排序,参数被认为是相等的

在处理数值时,最简单的解决方案是从第一个值中减去第二个值,这将产生升序结果。

这招对我很管用

var files=data.Contents;
files = files.sort(function(a,b){
return a.LastModified - b. LastModified;
});

或者使用 Lodash 对数组进行排序

files = _.orderBy(files,'LastModified','asc');

与已经给出的答案相比,这些答案并没有什么特别之处,但更普遍的是:

sortArrayOfObjects = (arr, key) => {
return arr.sort((a, b) => {
return a[key] - b[key];
});
};


sortArrayOfObjects(yourArray, "distance");

下面是与当前最热门答案相同的一句话:

myArray.sort((a, b) => a.distance - b.distance);

这里有一个被接受的答案的例子:

 a = [{name:"alex"},{name:"clex"},{name:"blex"}];

提升:

a.sort((a,b)=> (a.name > b.name ? 1 : -1))

输出: [{name: "alex"}, {name: "blex"},{name: "clex"} ]

返回文章页面降级:

a.sort((a,b)=> (a.name < b.name ? 1 : -1))

output : [{name: "clex"}, {name: "blex"}, {name: "alex"}]

这里还有一句俏皮话:

your_array.sort((a, b) => a.distance === b.distance ? 0 : a.distance > b.distance || -1);

ES6箭头功能:

const orderArrayBy = (arr, key) => arr.sort((a, b) => a[key] - b[key]);

推送数组 myArray 中的所有对象,然后使用以下命令应用排序。

myArray.sort(function(a, b) {
return a.distance - b.distance;
});

If you have lowercase and uppercase names, use toLowerCase() function.
这里有一个例子:

data = [{name:"foo"},{name:"Bar"},{name:"Foo"}];




a.sort((a,b)=> (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1))

你可以使用咖喱:

const arr = [
{ distance: 3388, duration: 6},
{ distance: 13564, duration: 12},
{ distance: 4046, duration: 6 },
{ distance: 11970, duration: 17 }
]


const sortByKey = (key) => (a, b) => b[key] - a[key];


const sortByDistance = sortByKey("distance");
const sortByDuration = sortByKey("duration");


console.log(arr.sort(sortByDistance))
console.log(arr.sort(sortByDuration))