Я пишу фильтр на основе JavaScript:
Существует множество элементов div с классом .single
, которые содержат несколько текстовых элементов. Фильтр уже скрывает все .single
, которые не содержат слов:
//take them off dom, manip and put them back
singles.detach().each(function(i) {
var $this = $(this);
//make sure everything is visible
$this.show();
//if this template is not included OR if this index number does not meet the treshold
if($.inArray(i, included) == -1 || treshold >= templates[i].score) {
$this.hide();
}
}).appendTo(container);
Массив included
содержит все индексы .single
, которые содержат как минимум одно слово. Массив templates
содержит объекты со всем текстом на .single
и оценкой, основанной на релевантности и количестве слов. Например:
templates = [
{ text: ['long string', 'long string 2'], score: 5 },
{ text: ['sf sd', 'gdasd'], score: 3 }
]
(Таким образом, все индексации не происходят в DOM)
Теперь я хочу отсортировать набор на основе этой оценки, или, другими словами: наивысшая оценка сверху. Индекс каждого элемента в наборе совпадает с индексом в templates
(который содержит все оценки).