télécharger

scoreIt.js

C'est quoi ?

scoreIt.js est une librairie très légère qui permet d'attibuer un score de proximité entre une chaine de caractère et une liste donnée.

Documentation

Téléchargement

https://scoreit.aicardi.pro/lib/scoreit.js

La fonction

let array = scoreIt(value, object, options);
 -> retourne "object" sous la forme d'un tableau
 -> trié par score décroissant

Les arguments

let value = "value"; -> la chaine de caractère de réference

let object = [] || {};
 -> un objet/tableau contenant des chaines de caractère
 -> un objet/tableau contenant d'autres objets/tableaux

let options = {
    path: [] -> un tableau représentant le chemin vers la chaine
    sort: true -> si le tableau final doit être trié selon les scores
    sortKey: false -> si c'est la clé d'index qui doit être utilisée
    scoreMin: 0 -> le score minimal pour figurer dans le tableau des scores
    scoreMax: 100 -> le score maximal pour figurer dans le tableau des scores
};

Object & Path

let object = [
    "manger des pommes",
    "manger des poires",
    "manger des prunes"
];

let options.path = [];
 -> on va chercher la chaine à object[i]
let object = [
    { data: { nom: "manger des pommes", short: "pommes" },
      prix: 10 },

    { data: { nom: "manger des poires", short: "poires" },
      prix: 20 },

    { data: { nom: "manger des prunes", short: "prunes" },
      prix: 30 }
];

let options.path = ["data", "nom"];
 -> on va chercher la chaine à : object[i].data.nom
let object = [
    ["manger des pommes"],
    ["manger des poires"],
    ["manger des prunes"]
];

let options.path = [0];
 -> on va chercher la chaine à object[i][0]
let object = {
    "manger des pommes": [],
    "manger des poires": [],
    "manger des prunes": []
};

let options.sortKey = true;
 -> la chaine correspond à : key in object

La valeur retour

 -> scoreIt() retourne un tableau d'objets
let array = scoreIt(value, object, options);

array = [ {obj}, {obj}, {obj}, ... ];

array[i] || obj = 
{
    score: 56 -> score de la chaine évaluée (min = 0, max = 100),
    obj: {} -> objet englobant la chaine évaluée (avant options.path),
    str: "manger des pommes" -> la chaine évaluée (après options.path),
    key: "key" -> la propriété d'entrée dans le cas d'un objet,
    id: 0 -> l'index de la chaine dans le tableau original
}

Afficher les résultats

for (var i=0; i<array.length; i++){

    var data = array[i].obj;

     -> ... afficher le résultat (dans le DOM ou ailleurs)

}

Démo