Les forums → Grammalecte → Erreur dans la version JS dans getSuggestions
let lRes = [];
if (this.dSugg.get(0).length) {
// we sort the better results with the original word
let dDistTemp = new Map();
lRes.forEach((sSugg) => { dDistTemp.set(sSugg, str_transform.distanceDamerauLevenshtein(this.sWord, sSugg)); });
lRes = lRes.sort((sA, sB) => { return dDistTemp.get(sA) - dDistTemp.get(sB); });
dDistTemp.clear();
}
...
if (this.dSugg.get(0).length) {
// we sort the better results with the original word
this.dSugg.get(0) = new Set([...this.dSugg.get(0)].sort(function(a,b){
return str_transform.distanceDamerauLevenshtein(this.sWord, a)- str_transform.distanceDamerauLevenshtein(this.sWord, b);
})
);
}
...
let lRes = [];
...
ça permettra de ne faire le trie s'il y a déjà assez de résultat. A répercuté aussi sur la version python.this.dSugg.get(0).length <= nSuggLimit
ça permettra de ne faire le trie s'il y a déjà assez de résultat.
Sinon l'argument nDistLimit de la function en js n'est pas utilisé ( je viens juste de voir ça ;) )
getSuggestions(nSuggLimit = 10) {
// return a list of suggestions
let lRes = [];
for (let [nDist, lSugg] of this.dSugg.entries()) {
if (nDist > this.nDistLimit) {
break;
}
if (lSugg.length > 1) {
// we sort the better results with the original word
lSugg.sort((a, b) => { return str_transform.distanceDamerauLevenshtein(this.sWord, a) - str_transform.distanceDamerauLevenshtein(this.sWord, b); });
}
lRes.push(...lSugg);
if (lRes.length > nSuggLimit) {
break;
}
}
if (this.sWord.gl_isUpperCase()) {
lRes = lRes.map((sSugg) => { return sSugg.toUpperCase(); });
lRes = [...new Set(lRes)];
}
else if (this.sWord.slice(0, 1).gl_isUpperCase()) {
lRes = lRes.map((sSugg) => { return sSugg.slice(0, 1).toUpperCase() + sSugg.slice(1); });
lRes = [...new Set(lRes)];
}
return lRes.slice(0, nSuggLimit);
}
lRes.push(...lSugg);
if (lRes.length > nSuggLimit) {
break;
}
if (lSugg.length > 1 && nDist < 2) {
// we sort the better results with the original word
if (this.sWord.gl_isUpperCase()) {
lRes = lRes.map((sSugg) => { return sSugg.toUpperCase(); });
lRes = [...new Set(lRes)];
}
else if (this.sWord.slice(0, 1).gl_isUpperCase()) {
lRes = lRes.map((sSugg) => { return sSugg.slice(0, 1).toUpperCase() + sSugg.slice(1); });
lRes = [...new Set(lRes)];
}
return lRes.slice(0, nSuggLimit);
lRes = new Set(lRes.slice(0, nSuggLimit));
if (this.sWord.gl_isUpperCase()) {
lRes = [...lRes].map((sSugg) => { return sSugg.toUpperCase(); });
lRes = [...new Set(lRes)];
}
else if (this.sWord.slice(0, 1).gl_isUpperCase()) {
lRes = [...lRes].map((sSugg) => { return sSugg.slice(0, 1).toUpperCase() + sSugg.slice(1); });
lRes = [...new Set(lRes)];
}
return lRes;