Materialise CSS 基于特定单词的自动完成排序
Materialize CSS Autocomplete sorting based on a specific word
我正在为我的 Google Apps 脚本使用 Materialize CSS Autocomplete,其中填充的数据来自我的 Google 联系人。我希望能够根据联系人姓名中的特定单词对联系人出现的顺序进行排序。例如,假设我有以下联系人:
- 杰森·加西亚
- 乔纳森·杰克逊 手机
- 莫妮卡斯托克斯
- Amy Wang 手机
- 亚伦·布里奇斯
我希望包含单词 Mobile 的联系人显示在列表顶部,其余按字母顺序排列:
- Amy Wang 手机
- 乔纳森·杰克逊 手机
- 亚伦·布里奇斯
- 杰森·加西亚
- 莫妮卡斯托克斯
为此,我一直在尝试使用 Materialize CSS 文档中的 sortFunction,但没有成功。我怎样才能实现这样的目标?
您可以通过检查数组是否包含术语“移动”来对数组进行排序,请参见下文。这 returns 首先是所有包含“移动”的内容,然后是所有其他内容。
const arr = ["Tom Mobile", "Sam", "Jess Mobile"]
arr.sort( (el1) => {
if(el1.search(/mobile/gi) == -1) return 1
return -1
}))
但那是针对数组的,你不需要数组,因此这个答案是笼统的而不是具体的。因此我做了一个你真正想要的快速演示:
document.addEventListener('DOMContentLoaded', function() {
const options = {
data : {
"Tom mobile" : null,
"Thomas" : null,
"Tim mobile" : null
},
sortFunction : sortBy
}
var elems = document.querySelectorAll('.autocomplete');
var instances = M.Autocomplete.init(elems, options);
});
// Sort function for sorting autocomplete results
// prioritize if text contains mobile
function sortBy(a, b) {
return b.indexOf("mobile") - a.indexOf("mobile");
}
参考
我正在为我的 Google Apps 脚本使用 Materialize CSS Autocomplete,其中填充的数据来自我的 Google 联系人。我希望能够根据联系人姓名中的特定单词对联系人出现的顺序进行排序。例如,假设我有以下联系人:
- 杰森·加西亚
- 乔纳森·杰克逊 手机
- 莫妮卡斯托克斯
- Amy Wang 手机
- 亚伦·布里奇斯
我希望包含单词 Mobile 的联系人显示在列表顶部,其余按字母顺序排列:
- Amy Wang 手机
- 乔纳森·杰克逊 手机
- 亚伦·布里奇斯
- 杰森·加西亚
- 莫妮卡斯托克斯
为此,我一直在尝试使用 Materialize CSS 文档中的 sortFunction,但没有成功。我怎样才能实现这样的目标?
您可以通过检查数组是否包含术语“移动”来对数组进行排序,请参见下文。这 returns 首先是所有包含“移动”的内容,然后是所有其他内容。
const arr = ["Tom Mobile", "Sam", "Jess Mobile"]
arr.sort( (el1) => {
if(el1.search(/mobile/gi) == -1) return 1
return -1
}))
但那是针对数组的,你不需要数组,因此这个答案是笼统的而不是具体的。因此我做了一个你真正想要的快速演示:
document.addEventListener('DOMContentLoaded', function() {
const options = {
data : {
"Tom mobile" : null,
"Thomas" : null,
"Tim mobile" : null
},
sortFunction : sortBy
}
var elems = document.querySelectorAll('.autocomplete');
var instances = M.Autocomplete.init(elems, options);
});
// Sort function for sorting autocomplete results
// prioritize if text contains mobile
function sortBy(a, b) {
return b.indexOf("mobile") - a.indexOf("mobile");
}
参考