gpt4 book ai didi

javascript - 按两个字段排序,但第二个字段取决于 PHP 中的条件

转载 作者:行者123 更新时间:2023-11-30 19:41:02 32 4
gpt4 key购买 nike

我有一个包含“商店”的数组,每个商店都有一个距离属性(与用户的距离)和一个“特色”属性(这个值越高,它们应该出现得越高)。

所以,现在我正在这样做:

var sorted = arr.sort(function(a,b){
return b.featured - a.featured || a.distance - b.distance;
});

首先按特征排序,然后按距离排序。

但是,如果距离太远(例如,超过 10 公里),即使结果是精选的,它也与用户不相关。

因此,我需要先对它们的“特色”属性进行排序,但前提是它们的距离属性小于 10。

我是这样想的:

  1. 按距离排序,接近 10km 的放在一个数组中,其他的放在另一个数组中。

  2. 按照特征属性对第一个数组中的元素进行排序。

  3. 加入两个数组。

但也许有更简单或更短的方法来做到这一点。

示例输入:

d: 19  | f: 2
d: 2 | f: 8
d: 3 | f: 5
d: 21 | f: 4
d: 6 | f: 0
d: 12 | f: 5
d: 1 | f: 5
d: 8 | f: 4
d: 5 | f: 0
d: 13 | f: 5
d: 11 | f: 2
d: 7 | f: 1
d: 9 | f: 10

示例输出:

d: 9   | f: 10
d: 2 | f: 8
d: 1 | f: 5
d: 3 | f: 5
d: 8 | f: 4
d: 7 | f: 1
d: 5 | f: 0
d: 6 | f: 0
d: 11 | f: 2
d: 12 | f: 5
d: 13 | f: 5
d: 19 | f: 2
d: 21 | f: 4

可以看到,距离小于10的,按照特征值排序,距离大于10的,按照距离排序。

最佳答案

如果我理解你的问题,你可以只添加一个条件来返回你当前返回的内容,如果不满足该条件,则只返回它的距离部分:

var sorted = arr.sort(function(a,b){
if (a.distance < 10000 || b.distance < 10000)
return b.featured - a.featured || a.distance - b.distance;

return a.distance - b.distance;
});

关于javascript - 按两个字段排序,但第二个字段取决于 PHP 中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55405318/

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