如何根据javascript中的两个属性对数组进行排序
我使用以下代码对javascript中的数组进行排序:如何根据javascript中的两个属性对数组进行排序,javascript,Javascript,我使用以下代码对javascript中的数组进行排序: array.sort(function(a,b){ var score_a = $.fuzzyMatch(a['name'], user).score, score_b = $.fuzzyMatch(b['name'], user).score; return score_a < score_b ? -1 : score_a === score_b
array.sort(function(a,b){
var score_a = $.fuzzyMatch(a['name'], user).score,
score_b = $.fuzzyMatch(b['name'], user).score;
return score_a < score_b ? -1 : score_a === score_b ? 0 : 1;
});
array.sort(函数(a,b){
var score_a=$.fuzzyMatch(a['name'],user).score,
score_b=$.fuzzyMatch(b['name'],user).score;
返回分数a
排序是获取数组中每一行的“name”属性,并通过fuzzymatch函数运行它,然后返回一个分数,以便在数组顶部返回最相关的匹配项
但是,我希望在排序中包含另一个属性,在这种情况下,它将是a['folcode']
或b['folcode']
因此,为了解决这个问题,我如何修改代码以始终将包含
['folcode']==4的行放在顶部,按最佳['name']
匹配排序,然后返回['folcode']==3行,也按最佳名称匹配排序。。。等等。如果您希望主要按照folcode
进行排序,并且在每个folcode
中按照name
进行排序,您必须为folcode
生成一个比较,就像您当前为name
所做的比较一样,但仅在等于条件下返回名称比较的值
功能(a、b){
var代码_a=a.folcode;
var代码_b=b.folcode;
var score_a=$.fuzzyMatch(a.name,user).score;
var score_b=$.fuzzyMatch(b.name,user).score;
如果(代码a==代码b)
返回分数a
有人能解释一下投票结果吗?我不是故意做错事,一个解释会帮助我学会如何在将来防止这种事情。谢谢,非常好,谢谢!我现在也觉得有点傻,因为解决方案太简单了。无论如何,非常感谢。:)我会尽快记下答案。
function(a,b) {
var code_a = a.folcode;
var code_b = b.folcode;
var score_a = $.fuzzyMatch(a.name, user).score;
var score_b = $.fuzzyMatch(b.name, user).score;
if(code_a === code_b)
return score_a < score_b ? -1 : score_a === score_b ? 0 : 1;
return code_a < code_b ? -1 : 1;
}