У меня есть массив строк.Мне нужно отсортировать массив на основе массива ключевых слов.Строка, содержащая макс.количество ключевых слов должно стоять на первом месте и так далее.Кроме того, строка, которая содержит макс.нет.поисковых ключевых слов должен идти первым, чем количество вхождений одного и того же поискового ключевого слова.testArray
следует игнорировать регистр searchTerms
.Если возможно, вы можете игнорировать строки, которые не содержат никаких поисковых слов в массиве результатов.
var testArray = [
"I am",
"I am wrong and I don't know",
"I am right and I know",
"I don't know",
"I do know"
],
searchTerms = ["I", "right","know"];
$.each(searchTerms, function(index, term) {
var regX = new RegExp(term, "i");
testArray = $.map(testArray, function(item) {
if (regX.test(item)) {
return item;
} else {
return;
}
});
});
console.log(testArray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Если вы наблюдаете в приведенном выше коде, ключевыми словами являются "I", "right","know"
.Таким образом, результаты testArray
должны быть такими, как показано ниже, строка
testArray = [
"I am right and I know",
"I am wrong and I don't know",
"I don't know",
"I do know",
"I am"
]
содержит все ключевые слова, идущие первыми, а другие строки содержат "I","know"
, поэтому они идут следующим образом, а строка "I am"
идет последней, поскольку она содержиттолько ключевое слово "I"
.
Codepen