gpt4 book ai didi

javascript - 如何根据关键条件通过两个键对对象进行排序

转载 作者:行者123 更新时间:2023-12-01 01:31:02 27 4
gpt4 key购买 nike

var obj = 
[{
"distance": 7000,
"rating": 2,
"name": 'a'
},
{
"distance": 3470,
"rating": 1,
"name": 'b'
}, {
"distance": 3470,
"rating": 2,
"name": 'c'
}, {
"distance": 3480,
"rating": 5,
"name": 'd'
}, {
"distance": 3490,
"rating": 3,
"name": 'e'
}, {
"distance": 4000,
"rating": 3,
"name": 'f'
}];

我希望获得按距离排序的输出,如果距离彼此接近某个值(例如10),则按评级排序。

我尝试了很多方法,但没有任何效果。

 obj.sort(function(a, b) {
return (a["distance"] - b["distance"]);
});

obj.sort(function(a, b) {
return (b["distance"] - a["distance"] <= 10 ? 0: 1) || b["rating"] -
a["rating"];
});

在上面的代码中,首先我尝试按距离排序,然后如果距离差小于 10,我会按评分排序。但这不能正常工作。

JSBin 链接 - https://jsbin.com/nawiderebu/edit?html,js,console

我想得到如下输出:

[
{
"distance": 3470,
"rating": 2,
"name": 'c'
},{
"distance": 3470,
"rating": 1,
"name": 'b'
}, {
"distance": 3480,
"rating": 5,
"name": 'd'
}, {
"distance": 3490,
"rating": 3,
"name": 'e'
}, {
"distance": 4000,
"rating": 3,
"name": 'f'
},{
"distance": 7000,
"rating": 2,
"name": 'a'
}
]

最佳答案

使用Math.abs(a["distance"] - b["distance"] < 10)状况如下。你不需要有第二个 sort打电话。

var obj = [
{
"distance": 7000,
"rating": 2,
"name": 'a'
},
{
"distance": 3470,
"rating": 1,
"name": 'b'
}, {
"distance": 3470,
"rating": 2,
"name": 'c'
}, {
"distance": 3480,
"rating": 5,
"name": 'd'
}, {
"distance": 3490,
"rating": 3,
"name": 'e'
}, {
"distance": 4000,
"rating": 3,
"name": 'f'
}
]

obj.sort(function(a, b) {
return Math.abs(a["distance"] - b["distance"]) <= 10 ? (b["rating"] - a["rating"]) : (a["distance"] - b["distance"]);
});

console.log(obj)

关于javascript - 如何根据关键条件通过两个键对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53274797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com