我正在尝试根据“餐厅”字符串在标题字段中的位置对对象数组进行排序
var test = [{
title: 'Roy Restaurant'
},
{
title: 'Restaurant'
},
{
title: 'Roy Mega Restaurant'
}
];
console.log(test.sort(function(a, b) {
return a.title.toLowerCase().indexOf('restaurant') > b.title.toLowerCase().indexOf('restaurant');
}));
所以我的预期输出是
var test = [
{
title : 'Restaurant'
},
{
title : 'Roy Restaurant'
},
{
title : 'Roy Mega Restaurant'
}
];
因此请按其indexOf
值对其进行排名。在上方,第一项indexOf
的值为0,因此它必须是第一项第二项Roy Restaurant
,因为单词的出现少于第三项。
有什么需要帮助的想法吗?
答案 0 :(得分:0)
排序比较需要一个整数而不是布尔值。 来自MDN
如果compareFunction(a,b)小于0,则将a排序为小于以下的索引 b(即a优先)
在第14行将>
更改为-
。
var test = [
{
title : 'Roy Restaurant'
},
{
title : 'Restaurant'
},
{
title : 'Roy Mega Restaurant'
}
];
console.log( test.sort(function(a,b){
return a.title.toLowerCase().indexOf('restaurant') - b.title.toLowerCase().indexOf('restaurant');
}) );